Avatar billede sylvesternielsen Nybegynder
16. september 2004 - 13:45 Der er 13 kommentarer og
1 løsning

Hente data fra input fields i en Datalist

Her er min update statement, men det fungere ikke.
Problemet er at jeg ikke kan finde ud af at hente dataene fra mine input fileds ind i et array til en string.

Hvad gør jeg forkert eller hvad mangler jeg at gøre for at få det til at fungere?

    Sub MyDataList_Update(ByVal Sender As Object, ByVal E As DataListCommandEventArgs)

        Dim MyConnection As SqlConnection
        Dim MyUpdate As SqlDataAdapter
        Dim MyCommand As SqlCommand
        Dim Stilling2 As TextBox


        MyConnection = New SqlConnection(System.Configuration.ConfigurationSettings.AppSettings("PubsString"))

        Dim UpdateCmd As String = "UPDATE Ansatte SET Stilling = @Stilling where id = @id"

        MyCommand = New SqlCommand(UpdateCmd, MyConnection)

        MyCommand.Parameters.Add(New SqlParameter("@id", SqlDbType.Int, 4))
        MyCommand.Parameters.Add(New SqlParameter("@Stilling", SqlDbType.NVarChar, 255))

        MyCommand.Parameters("@id").Value = MyDataList.DataKeys(CType(E.Item.ItemIndex, Integer))
        Stilling2 = E.Item.FindControl("Stilling")
        MyCommand.Parameters("@Stilling").Value = Stilling2.Text

        MyDataList.EditItemIndex = -1

        MyCommand.Connection.Open()
        MyCommand.ExecuteNonQuery()

        ShowData()
    End Sub
Avatar billede snepnet Nybegynder
16. september 2004 - 13:48 #1
Nu er jeg ikke ligefrem en VB-haj, men er det ikke nødvendigt med et typecast her :
Stilling2 = E.Item.FindControl("Stilling")
Eller er det implicit i VB ?
Avatar billede snepnet Nybegynder
16. september 2004 - 13:49 #2
Sådan noget i denne stil :
Dim tb As TextBox = CType(e.FindControl("someTextBox"), TextBox)
Avatar billede snepnet Nybegynder
16. september 2004 - 13:50 #3
hvis det ikke er det der er problemet, vil jeg gerne se din aspx-kode (der skulle jo meget gerne optræde en TextBox med det id="Stilling"
Avatar billede sylvesternielsen Nybegynder
16. september 2004 - 13:53 #4
Hele min aspx.

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="Ansatte.aspx.vb" Inherits="Ansatte"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
    <HEAD>
        <title>Ansatte</title>
        <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie3-2nav3-0">
        <link href="CSS/styles.css" type="text/css" rel="stylesheet">
    </HEAD>
    <body MS_POSITIONING="FlowLayout">
        <form id="Form1" method="post" runat="server">
            <asp:Label id="ErrorStr" runat="server"></asp:Label><BR>
            <asp:DataList id="MyDataList" runat="server" RepeatColumns="1" OnEditCommand="MyDataList_Edit" OnCancelCommand="MyDataList_Cancel" OnUpdateCommand="MyDataList_Update" DataKeyField="id">
                <HeaderTemplate>
                    Head
                </HeaderTemplate>
                <FooterTemplate>
                    Footer
                </FooterTemplate>
                <ItemTemplate>
                    <table width="100%"  border="0" cellspacing="0" cellpadding="5" style="border:1px solid #000000 ">
                    <tr>
                        <td colspan="2"><div align="center"><strong><%# DataBinder.Eval(Container.DataItem, "Fornavn") %> <%# DataBinder.Eval(Container.DataItem, "Efternavn") %></strong></div></td>
                    </tr>
                    <tr>
                        <td width="100" valign="top"><img src="Images/Ansatte/<%# DataBinder.Eval(Container.DataItem, "Billede") %>" width="100"></td>
                        <td valign="top"><table  border="0" cellspacing="0" cellpadding="0">
                        <tr>
                            <td><div align="right"><strong>Stilling:</strong></div></td>
                            <td width="10">&nbsp;</td>
                            <td><%# DataBinder.Eval(Container.DataItem, "Stilling") %></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Personale Nummer: </strong></div></td>
                            <td width="10">&nbsp;</td>
                            <td><%# DataBinder.Eval(Container.DataItem, "id") %></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Afdeling:</strong></div></td>
                            <td>&nbsp;</td>
                            <td><%# DataBinder.Eval(Container.DataItem, "Afdeling") %></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Lokal Nummer:</strong></div></td>
                            <td>&nbsp;</td>
                            <td><%# DataBinder.Eval(Container.DataItem, "TlfLokal") %></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Mobil Nummer:</strong></div></td>
                            <td>&nbsp;</td>
                            <td><%# DataBinder.Eval(Container.DataItem, "TlfMobil") %></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Direkte Nummer:</strong></div></td>
                            <td>&nbsp;</td>
                            <td><%# DataBinder.Eval(Container.DataItem, "TlfDirekte") %></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Privat Nummer:</strong></div></td>
                            <td>&nbsp;</td>
                            <td><%# DataBinder.Eval(Container.DataItem, "TlfPrivat") %></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Fax:</strong></div></td>
                            <td>&nbsp;</td>
                            <td><%# DataBinder.Eval(Container.DataItem, "Fax") %></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Email (Firma):</strong></div></td>
                            <td>&nbsp;</td>
                            <td><%# DataBinder.Eval(Container.DataItem, "EmailFirma") %></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Email (Privat):</strong></div></td>
                            <td>&nbsp;</td>
                            <td><%# DataBinder.Eval(Container.DataItem, "EmailPrivat") %></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Ansat den:</strong></div></td>
                            <td>&nbsp;</td>
                            <td><%# DataBinder.Eval(Container.DataItem, "Ansat") %></td>
                        </tr>
                        <tr>
                            <td>&nbsp;</td>
                            <td>&nbsp;</td>
                            <td>&nbsp;</td>
                        </tr>
                        <tr>
                            <td colspan="3" align="center"><asp:linkbutton CommandName="Edit" runat="server" ID="Linkbutton1"> <img border="0" src="Images/icon-pencil.gif"> </asp:linkbutton></td>
                        </tr>
                        </table></td>
                    </tr>
                    </table>
                </ItemTemplate>
                <EditItemTemplate>
                    <table width="100%"  border="0" cellspacing="0" cellpadding="5" style="border:1px solid #000000 ">
                    <tr>
                        <td colspan="2"><div align="center"><strong><input type="text" name="Fornavn" value="<%# DataBinder.Eval(Container.DataItem, "Fornavn") %>"> <input type="text" name="Efternavn" value="<%# DataBinder.Eval(Container.DataItem, "Efternavn") %>"></strong></div></td>
                    </tr>
                    <tr>
                        <td width="100" valign="top"><img src="Images/Ansatte/<%# DataBinder.Eval(Container.DataItem, "Billede") %>" width="100"><br><br>
                        Upload billede
                        </td>
                        <td valign="top"><table  border="0" cellspacing="0" cellpadding="0">
                        <tr>
                            <td><div align="right"><strong>Stilling:</strong></div></td>
                            <td width="10">&nbsp;</td>
                            <td><input type="text" name="Stilling" id="Stilling" value="<%# DataBinder.Eval(Container.DataItem, "Stilling") %>"></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Personale Nummer: </strong></div></td>
                            <td width="10">&nbsp;</td>
                            <td><input type="text" name="id" value="<%# DataBinder.Eval(Container.DataItem, "id") %>"></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Afdeling:</strong></div></td>
                            <td>&nbsp;</td>
                            <td><input type="text" name="Afdeling" value="<%# DataBinder.Eval(Container.DataItem, "Afdeling") %>"></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Lokal Nummer:</strong></div></td>
                            <td>&nbsp;</td>
                            <td><input type="text" name="TlfLokal" value="<%# DataBinder.Eval(Container.DataItem, "TlfLokal") %>"></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Mobil Nummer:</strong></div></td>
                            <td>&nbsp;</td>
                            <td><input type="text" name="TlfMobil" value="<%# DataBinder.Eval(Container.DataItem, "TlfMobil") %>"></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Direkte Nummer:</strong></div></td>
                            <td>&nbsp;</td>
                            <td><input type="text" name="TlfDirekte" value="<%# DataBinder.Eval(Container.DataItem, "TlfDirekte") %>"></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Privat Nummer:</strong></div></td>
                            <td>&nbsp;</td>
                            <td><input type="text" name="TlfPrivat" value="<%# DataBinder.Eval(Container.DataItem, "TlfPrivat") %>"></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Fax:</strong></div></td>
                            <td>&nbsp;</td>
                            <td><input type="text" name="Fax" value="<%# DataBinder.Eval(Container.DataItem, "Fax") %>"></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Email (Firma):</strong></div></td>
                            <td>&nbsp;</td>
                            <td><input type="text" name="EmailFirma" value="<%# DataBinder.Eval(Container.DataItem, "EmailFirma") %>"></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Email (Privat):</strong></div></td>
                            <td>&nbsp;</td>
                            <td><input type="text" name="EmailPrivat" value="<%# DataBinder.Eval(Container.DataItem, "EmailPrivat") %>"></td>
                        </tr>
                        <tr>
                            <td><div align="right"><strong>Ansat den:</strong></div></td>
                            <td>&nbsp;</td>
                            <td><input type="text" name="Ansat" value="<%# DataBinder.Eval(Container.DataItem, "Ansat") %>"></td>
                        </tr>
                        <tr>
                            <td>&nbsp;</td>
                            <td>&nbsp;</td>
                            <td>&nbsp;</td>
                        </tr>
                        <tr>
                            <td colspan="3" align="center">
                            <input type="hidden" name="Identify" value="<%# DataBinder.Eval(Container.DataItem, "id") %>">
                                <asp:linkbutton CommandName="Update" runat="server" ID="Linkbutton2">
                                <img border="0" src="images/icon-done.gif"></asp:linkbutton>
                                <asp:linkbutton CommandName="Cancel" runat="server" ID="Linkbutton3">
                                <img border="0" src="images/icon-delete.gif"></asp:linkbutton>
                            </td>
                        </tr>
                        </table>   
                    </td>
                    </tr>
                    </table>
                </EditItemTemplate>
            </asp:DataList>
        </form>
    </body>
</HTML>
Avatar billede sylvesternielsen Nybegynder
16. september 2004 - 13:53 #5
Og min ascx

Imports System.Data
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls
Imports System.Data.SqlClient

Public Class Ansatte
    Inherits System.Web.UI.Page

    Protected WithEvents Stilling As System.Web.UI.WebControls.TextBox


#Region " Web Form Designer Generated Code "

    'This call is required by the Web Form Designer.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub
    Protected WithEvents MyDataList As System.Web.UI.WebControls.DataList
    Protected WithEvents ErrorStr As System.Web.UI.WebControls.Label

    'NOTE: The following placeholder declaration is required by the Web Form Designer.
    'Do not delete or move it.
    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: This method call is required by the Web Form Designer
        'Do not modify it using the code editor.
        InitializeComponent()
    End Sub

#End Region

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
        If Not (Page.IsPostBack) Then
            ShowData()
        End If
    End Sub

    Sub ShowData()
        Dim Ds As DataSet
        Dim MyConnection As SqlConnection
        Dim MyCommand As SqlDataAdapter

        MyConnection = New SqlConnection(System.Configuration.ConfigurationSettings.AppSettings("PubsString"))
        MyCommand = New SqlDataAdapter("select * from Ansatte where Aktiv = 1", MyConnection)

        Ds = New DataSet
        MyCommand.Fill(Ds, "Ansatte")
        MyDataList.DataSource = Ds.Tables("Ansatte").DefaultView
        MyDataList.DataBind()

    End Sub

    Sub MyDataList_Edit(ByVal Sender As Object, ByVal E As DataListCommandEventArgs)
        MyDataList.EditItemIndex = CInt(E.Item.ItemIndex)
        ShowData()
    End Sub

    Sub MyDataList_Cancel(ByVal Sender As Object, ByVal E As DataListCommandEventArgs)

        MyDataList.EditItemIndex = -1
        ErrorStr.Text = ""
        ShowData()
    End Sub

    Sub MyDataList_Update(ByVal Sender As Object, ByVal E As DataListCommandEventArgs)

        Dim MyConnection As SqlConnection
        Dim MyUpdate As SqlDataAdapter
        Dim MyCommand As SqlCommand
        Dim Stilling2 As TextBox


        MyConnection = New SqlConnection(System.Configuration.ConfigurationSettings.AppSettings("PubsString"))

        Dim UpdateCmd As String = "UPDATE Ansatte SET Stilling = @Stilling where id = @id"

        MyCommand = New SqlCommand(UpdateCmd, MyConnection)

        MyCommand.Parameters.Add(New SqlParameter("@id", SqlDbType.Int, 4))
        MyCommand.Parameters.Add(New SqlParameter("@Stilling", SqlDbType.NVarChar, 255))

        MyCommand.Parameters("@id").Value = MyDataList.DataKeys(CType(E.Item.ItemIndex, Integer))
        Stilling2 = E.Item.FindControl("Stilling")
        MyCommand.Parameters("@Stilling").Value = Stilling2.Text

        MyDataList.EditItemIndex = -1

        MyCommand.Connection.Open()
        MyCommand.ExecuteNonQuery()

        ShowData()
    End Sub

End Class
Avatar billede snepnet Nybegynder
16. september 2004 - 13:57 #6
<td><input type="text" name="Stilling" id="Stilling" value="<%# DataBinder.Eval(Container.DataItem, "Stilling") %>"></td>

er ikke nogen serverkontrol, så den tror jeg ikke du kan få fat i på den måde.
Avatar billede snepnet Nybegynder
16. september 2004 - 13:59 #7
Prøv med sådan en her :
<asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container, "Stilling") %>'></asp:TextBox>
Avatar billede sylvesternielsen Nybegynder
16. september 2004 - 14:03 #8
Får dette tilbage.
DataBinder.Eval: 'System.Web.UI.WebControls.DataListItem' does not contain a property with the name Stilling.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: DataBinder.Eval: 'System.Web.UI.WebControls.DataListItem' does not contain a property with the name Stilling.

Source Error:
Line 108:                            <td><div align="right"><strong>Stilling:</strong></div></td>
Line 109:                            <td width="10">&nbsp;</td>
Line 110:                            <td><asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container, "Stilling") %>' ID="Stilling"></asp:TextBox></td>
Line 111:                        </tr>
Line 112:                        <tr>
Avatar billede snepnet Nybegynder
16. september 2004 - 14:09 #9
er det et dataset du binder til, og er du bombesikker på at du har en kolonne der hedder stilling i det grundlag du binder til ?
Avatar billede sylvesternielsen Nybegynder
16. september 2004 - 14:10 #10
Jeg har i min database en kolonne som hedder Stilling ja.
Avatar billede sylvesternielsen Nybegynder
16. september 2004 - 14:11 #11
Jeg kan også sagtens opdatere i databasen ved bare at skrive MyCommand.Parameters("@Stilling").Value = "Noget tekst"

Så problemet må ligge i at jeg henter dataene forkert, at de forkert datatype ell.
Avatar billede snepnet Nybegynder
16. september 2004 - 14:40 #12
nøh... din code-behind ser meget fin ud...
Tror jeg lavede en lille bøf... Prøv den her :

<td><asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Stilling") %>' ID="Stilling"></asp:TextBox></td>

.DataItem er blevet tilføjet :o)
Avatar billede sylvesternielsen Nybegynder
27. september 2004 - 22:39 #13
smider du et svar?
Avatar billede snepnet Nybegynder
27. september 2004 - 22:44 #14
ok :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester