DataGrid更新不了數據的問題!

由於網頁上的按鈕(AutoPostBack=true),點擊過後就會先調用Page_Load事件,由於Page_Load中有DateBind方法,每次輸入的新數據就會被數據庫中的舊數據代替,所以要在Page_Load中做判斷:如果頁面更新了的話那麼就不重新綁定(重新綁定會把新數據替換掉),如果頁面沒有更新那麼就重新綁定

例:

        ShowData.DataSource = dt_Stu_union  ’ShowData爲DataGrid,dt_Stu_union 爲DataTable
        If IsPostBack = False Then
            ShowData.DataBind()
        End If

    Private Sub ShowData_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles ShowData.UpdateCommand
        Dim tem(3) As String
        Dim dr As DataRow
        dr = dt_Stu_union.NewRow()
        '將數據保存到一個數組裏
        tem(0) = CType(e.Item.Cells(1).Controls(0), TextBox).Text'//e.item.Cells(n).Contols(0)這裏的n是DataGrid的列號,如果是1就是第一列,如果有修改和刪除按鈕的話,也要把這兩列算在其中加上!如果這兩列是在顯示數據的後面的話都無所謂了!

        tem(1) = CType(e.Item.Cells(2).Controls(0), TextBox).Text
        tem(2) = CType(e.Item.Cells(3).Controls(0), TextBox).Text
        tem(3) = CType(e.Item.Cells(4).Controls(0), TextBox).Text
        '刪除舊數據
        dt_Stu_union.Rows(e.Item.ItemIndex).Delete()

        '添加新數據
        dr(0) = tem(0)
        dr(1) = tem(1)
        dr(2) = tem(2)
        dr(3) = tem(3)
        dt_Stu_union.Rows.Add(dr)

        '更新數據庫
        Dim db As New SqlClient.SqlCommandBuilder(da_Stu_union)

        Modu.cnn.Open()
        da_Stu_union.Update(dt_Stu_union)
        dt_Stu_union.AcceptChanges()
        Modu.cnn.Close()
        '關閉修改狀態
        ShowData.EditItemIndex = -1
        '數據綁定
        ShowData.DataSource = dt_Stu_union
        ShowData.DataBind()
    End Sub

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章