此时要用到DataGrid控件的ItemDataBound事件了,该事件表示每绑定完一行记录,就会触发相应的事件过程。在其中就可以想办法找到删除按钮,并给它添加JavaScript事件
e.Item.ItemType表示当前行的类型,DataGrid控件一般有标题行(ListItemType.Header)、普通行(ListItemType.Item)、交替行(ListItemType.AlternatingItem)、脚注行(ListItemType.Footer)等类型
<%@ Import Namespace="System.Data" %><%@ Import Namespace="System.Data.OleDb" %><script language="VB" runat="server">Sub Page_Load(Sender As Object, E As EventArgs) If Not IsPostBack Then Call myDataBind() '启动页面时调用数据绑定子程序 End IfEnd Sub'单击删除时执行该事件过程Sub MyDataGrid_Delete(Sender As Object, E As DataGridCommandEventArgs) '建立Connection对象 Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("address.mdb")) '建立Command对象 Dim strSql As String strSql="Delete from users Where & MyDataGrid.DataKeys(CInt(E.Item.ItemIndex)) Dim cmd As New OleDbCommand(strSql, conn) '执行删除操作 conn.Open() cmd.ExecuteNonQuery() conn.Close() '重新绑定 MyDataGrid.EditItemIndex = -1 Call myDataBind()End Sub'数据绑定子程序,供其它过程调用Sub myDataBind() Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("address.mdb")) '建立Connection对象 Dim cmd As New OleDbCommand("select * from users", conn) '建立Command对象 Dim adp As New OleDbDataAdapter(cmd) '建立DataAdapter对象 Dim ds As New DataSet() '建立DataSet对象 adp.Fill(ds, "users") '填充DataSet MyDataGrid.DataSource=DS.Tables("users").DefaultView '指定数据源 MyDataGrid.DataBind() '执行绑定End Sub'每绑定一行,将会触发该事件过程,在其中将给删除按钮添加JavaScript事件Sub MyDataGrid_ItemDataBound(sender As Object, e As DataGridItemEventArgs) '这个判断语句表示,只有对于数据行才执行,对于标题栏和脚注栏则不执行 If e.Item.ItemType=ListItemType.Item Or e.Item.ItemType=ListItemType.AlternatingItem Then '下面找到删除按钮控件,它其实是一个LinkButton控件 Dim lbtnDel As LinkButton '定义一个LinkButton控件 lbtnDel=e.Item.Cells(0).Controls(0) '它位于第0列第0个控件 '下面添加JavaScript事件 lbtnDel.Attributes.Add("onclick",return confirm('您真的要删除 " & e.Item.DataItem("name") & " 吗?');") End IfEnd Sub </script><html><body><form runat="server"> <asp:DataGrid Width="95%" HeaderStyle-BackColor="#BCBCBC" OnDeleteCommand="MyDataGrid_Delete" DataKeyField="id" OnItemDataBound="MyDataGrid_ItemDataBound" runat="server" > <Columns> <asp:ButtonColumn Text="删除" CommandName="Delete"/> </Columns> </asp:DataGrid></form></body></html>