在DataGrid里添加确认删除的对话框,第二个办法就是利用ButtonColumn,这个办法与第一个方法不同的是:我们不能使用FindControl方法来引用Button控件,这是因为,我们不知道由ButtonColumn产生的每个Button控件的ID,我们这里可以使用TableCell来引用TableCell里的Button控件,一旦引用了Button控件,我们就可以用Attributes集合来添加Onclick事件。源代码如下:
DeleteIt2.aspx
DeleteIt2.aspx.vb
Imports System.Web
Imports System.Data
Imports System.Data.OleDb
Imports System.Web.UI.WebControls
Public Class DeleteIt2
Inherits System.Web.UI.Page
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents myDataGrid As System.Web.UI.WebControls.DataGrid
#Region " Web 窗体设计器生成的代码 "
'该调用是 Web 窗体设计器所必需的。
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles MyBase.Load
'在此处放置初始化页的用户代码
myDataGrid.HeaderStyle.HorizontalAlign = HorizontalAlign.Center
myDataGrid.HeaderStyle.Font.Bold = True
myDataGrid.HeaderStyle.BackColor = System.Drawing.Color.Ivory
myDataGrid.Columns(0).HeaderText = "操作"
myDataGrid.Columns(1).HeaderText = "标题"
myDataGrid.Columns(2).HeaderText = "创建日期"
If Not IsPostBack Then
Dim strCn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
+ Server.MapPath("Test.mdb")
Dim strSql As String = "SELECT Top 15 objectGuid,Title,CreateDate"_
+ " FROM Document Order By CreateDate Desc"
Dim cn As New OleDbConnection(strCn)
cn.Open()
Dim cmd As New OleDbCommand(strSql, cn)
myDataGrid.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection)
myDataGrid.DataBind()
cmd.Dispose()
cmd = Nothing
cn.Close()
cn.Dispose()
cn = Nothing
End If
End Sub
Public Sub DataGrid_ItemCreated(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles myDataGrid.ItemCreated
Select Case e.Item.ItemType
Case ListItemType.Item, ListItemType.AlternatingItem, ListItemType.EditItem
Dim myTableCell As TableCell
myTableCell = e.Item.Cells(0)
Dim myDeleteButton As LinkButton
myDeleteButton = myTableCell.Controls(0)
myDeleteButton.Attributes.Add("onclick", "return confirm('您真的要删除此行吗?');")
myDeleteButton.Text = "删除此行"
End Select
End Sub
Sub MyDataGrid_Delete(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs)
Label1.Text = "你要删除的是: " _
+ myDataGrid.DataKeys(CInt(E.Item.ItemIndex)) + ""
E.Item.BackColor = System.Drawing.Color.Tomato
End Sub
End Class