Wrox Home  
Search P2P Archive for: Go

  Return to Index  

aspx_beginners thread: Update problems


Message #1 by "F-J Mattmann" <f-j.mattmann@e...> on Wed, 9 Oct 2002 15:38:44
Hi
I am getting creasy: I ca´nt let my code to update the changes I make in 
the edit-form, Does anyone see why?
Thanks in advance
----
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Page Language="VB" Debug="true" %>

<html>

<script language="VB" runat="server">

    Dim MyConnection As SqlConnection

    Sub Page_Load(Sender As Object, E As EventArgs)

        'MyConnection = New SqlConnection("server=(local)
\NetSDK;database=pubs;Trusted_Connection=yes")
	MyConnection = New SqlConnection
("server=144.24.14.107;database=FrasseTest;UID=sa")
        If Not (IsPostBack)
            BindGrid()
        End If
    End Sub

    Sub MyDataGrid_Edit(Sender As Object, E As DataGridCommandEventArgs)

        MyDataGrid.EditItemIndex = CInt(E.Item.ItemIndex)
        BindGrid()
    End Sub

    Sub MyDataGrid_Cancel(Sender As Object, E As DataGridCommandEventArgs)

        MyDataGrid.EditItemIndex = -1
        BindGrid()
    End Sub


    Sub MyDataGrid_Update(Sender As Object, E As DataGridCommandEventArgs)

        Dim DS As DataSet
        Dim MyCommand As SqlCommand

        Dim UpdateCmd As String = "UPDATE tblusers SET USERID = @USERID, 
förnamn = @förnamn, efternamn = @efternamn, adress = " _
             & " @adress, postnr = @postnr, stad = @stad, mobil = @mobil, 
telefon = @telefon where USERID = @USERID"

        MyCommand = New SqlCommand(UpdateCmd, MyConnection)

        MyCommand.Parameters.Add(New SqlParameter("@USERID", 
SqlDbType.NVarChar, 10))
        MyCommand.Parameters.Add(New SqlParameter("@förnamn", 
SqlDbType.NVarChar, 15))
        MyCommand.Parameters.Add(New SqlParameter("@efternamn", 
SqlDbType.NVarChar, 18))
       MyCommand.Parameters.Add(New SqlParameter("@Adress", 
SqlDbType.NVarChar, 20))
        MyCommand.Parameters.Add(New SqlParameter("@postnr", 
SqlDbType.NChar, 8))
       MyCommand.Parameters.Add(New SqlParameter("@stad", 
SqlDbType.NVarChar, 12))
        MyCommand.Parameters.Add(New SqlParameter("@mobil", 
SqlDbType.NVarChar,12))
        MyCommand.Parameters.Add(New SqlParameter("@telefon", 
SqlDbType.NChar, 12))
       

        MyCommand.Parameters("@USERID").Value = MyDataGrid.DataKeys(CInt
(E.Item.ItemIndex))

        Dim Cols As String() = 
{"@USERID","@förnamn","@efternamn","@adress","@postnr","@stad","@mobil","@t
elefon"}

        Dim NumCols As Integer = E.Item.Cells.Count

        

        MyCommand.Connection.Open()

        Try
            MyCommand.ExecuteNonQuery()
            Message.InnerHtml = "<b>Record Updated</b><br>" & 
UpdateCmd.ToString()
            MyDataGrid.EditItemIndex = -1
        Catch Exp As SQLException
            If Exp.Number = 2627
                Message.InnerHtml = "ERROR: A record already exists with 
the same primary key"
            Else
                Message.InnerHtml = "ERROR: Could not update record, 
please ensure the fields are correctly filled out"
            End If
            Message.Style("color") = "red"
        End Try

        MyCommand.Connection.Close()

        BindGrid()
    End Sub

    Sub MyDataGrid_ItemDataBound(Sender As Object, E As 
DataGridItemEventArgs)
        If (e.Item.ItemType = ListItemType.EditItem) Then
            Dim i As Integer
            For i = 0 To e.Item.Controls.Count-1
                Try
                    If (e.Item.Controls(i).Controls(0).GetType().ToString
() = "System.Web.UI.WebControls.TextBox") Then
                        Dim tb As TextBox
                        tb = e.Item.Controls(i).Controls(0)
                        tb.Text = Server.HtmlDecode(tb.Text)
                    End If
                Catch
                
                End Try
            Next
        End If
    End Sub

    Sub BindGrid()

        Dim DS As DataSet
        Dim MyCommand As SqlDataAdapter
        MyCommand = new SqlDataAdapter("select * from tblusers", 
MyConnection)

        DS = new DataSet()
        MyCommand.Fill(DS, "tblusers")

        MyDataGrid.DataSource=DS.Tables("tblusers").DefaultView
        MyDataGrid.DataBind()
    End Sub

</script>

<body style="font: 10pt verdana">

  <form runat="server">

    <h3><font face="Verdana">Updating a Row of Data w/ Read-Only 
Column</font></h3>

    <span id="Message" EnableViewmobil="false" style="font: arial 11pt;" 
runat="server"/><p>

    <ASP:DataGrid id="MyDataGrid" runat="server"
      Width="800"
      BackColor="#ccccff"
      BorderColor="black"
      ShowFooter="false"
      CellPadding=3
      CellSpacing="0"
      Font-Name="Verdana"
      Font-Size="8pt"
      HeaderStyle-BackColor="#aaaadd"
      OnEditCommand="MyDataGrid_Edit"
      OnCancelCommand="MyDataGrid_Cancel"
      OnUpdateCommand="MyDataGrid_Update"
      DataKeyField="USERID"
      AutoGenerateColumns="false"
      OnItemDataBound="MyDataGrid_ItemDataBound"
    >

      <Columns>
        <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" 
UpdateText="Update" ItemStyle-Wrap="false"/>
        <asp:BoundColumn HeaderText="USERID" SortExpression="USERID" 
ReadOnly="True" DataField="USERID" ItemStyle-Wrap="false"/>
        <asp:BoundColumn HeaderText="förnamn" SortExpression="förnamn" 
DataField="förnamn"/>
        <asp:BoundColumn HeaderText="efternamn" SortExpression="efternamn" 
DataField="efternamn"/>
        <asp:BoundColumn HeaderText="adress" SortExpression="adress" 
DataField="adress"/>
        <asp:BoundColumn HeaderText="postnr" SortExpression="postnr" 
DataField="postnr"/>
        <asp:BoundColumn HeaderText="stad" SortExpression="stad" 
DataField="stad"/>
        <asp:BoundColumn HeaderText="mobil" SortExpression="mobil" 
DataField="mobil"/>
        <asp:BoundColumn HeaderText="telefon" SortExpression="telefon" 
DataField="telefon"/>
        
      </Columns>

    </ASP:DataGrid>

  </form>

</body>
</html>

  Return to Index