[原创]Datagrid的编辑,更新操作



        页面上有一个datagrid控件,为了简单我只更新了Titles数据表里的price字段,更新其他都是一样的,在这里要注意给Sqlcommand提供参数的方法,以及获得当前ID和当前编辑后的Price的值。Datagrid1.edittitlemindex=-1为退出编辑状态。
    Dim conn As New SqlConnection("data source=localhost;initial catalog=pubs;user id=sa;pwd=SC")
    
Dim com As New SqlDataAdapter("select title_id,price,type from titles", conn)
    
Dim ds As DataSet = New DataSet
    
Sub grid()
        com.Fill(ds, 
"abc")
        DataGrid1.DataSource 
= ds.Tables(0).DefaultView
        DataGrid1.DataKeyField 
= "title_id" '表明主键
        DataGrid1.DataBind()
    
End Sub


    
Private Sub Page_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load
        
If Not Page.IsPostBack Then
            grid()
        
End If
    
End Sub


    
Private Sub DataGrid1_EditCommand(ByVal source As ObjectByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand
        
'datagrid1.edititemindex属性可以设置哪行进入编辑状态,-1为退出编辑状态

        DataGrid1.EditItemIndex 
= e.Item.ItemIndex '可由事件对象返回哪行的编辑按钮被按下
        grid()
    
End Sub


    
Private Sub DataGrid1_CancelCommand(ByVal source As ObjectByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.CancelCommand
        DataGrid1.EditItemIndex 
= -1
        grid()
    
End Sub


    
Private Sub DataGrid1_UpdateCommand(ByVal source As ObjectByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
        conn.Open()
        
'使用@变量名的方法书写更新语句
        Dim com As SqlCommand = New SqlCommand("update titles set price=@price where title_id=@id", conn)
        com.Parameters.Add(
New SqlParameter("@id", SqlDbType.NVarChar, 10))
        com.Parameters(
"@id").Value = DataGrid1.DataKeys(e.Item.ItemIndex) '根据主键返回要更新的ID
        com.Parameters.Add(New SqlParameter("@price", SqlDbType.Decimal))
        
Dim tb As TextBox
        tb 
= e.Item.Cells(4).Controls(0)
        com.Parameters(
"@price").Value = Convert.ToDecimal(tb.Text)
        
Try
            com.ExecuteNonQuery()
        
Catch ex As Exception
            Response.
Write("更新失败<br>" & ex.ToString)
        
Finally
            conn.Close()
        
End Try
    
End Sub
posted on 2005-02-04 11:41  雪无止境  阅读(533)  评论(0编辑  收藏  举报