页面上有一个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
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
Sub grid()
Sub grid()
com.Fill(ds, "abc")
DataGrid1.DataSource = ds.Tables(0).DefaultView
DataGrid1.DataKeyField = "title_id" '表明主键
DataGrid1.DataBind()
End Sub
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
Private
Sub Page_Load()
Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
grid()
End If
End Sub
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
Private
Sub DataGrid1_EditCommand()
Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand
'datagrid1.edititemindex属性可以设置哪行进入编辑状态,-1为退出编辑状态
DataGrid1.EditItemIndex = e.Item.ItemIndex '可由事件对象返回哪行的编辑按钮被按下
grid()
End Sub
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
Private
Sub DataGrid1_CancelCommand()
Sub DataGrid1_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.CancelCommand
DataGrid1.EditItemIndex = -1
grid()
End Sub
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
Private
Sub DataGrid1_UpdateCommand()
Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal 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