在ASP.NET中,GridView控件是一个非常强大的数据展示组件,它允许开发者以表格的形式展示数据,并且可以对数据进行分页、排序等操作。本文将介绍如何在GridView中添加事件处理程序,以实现更复杂的交互功能。
在之前的一篇文章中,介绍了如何在GridView用户控件中处理事件。本文将在此基础上,进一步扩展项目,添加更多的事件处理功能。
在之前的文章中,创建了一个名为RowDataBound
的事件处理程序。在本文中,将添加另一个名为RowCommand
的事件处理程序。使用相同的方法来定义这个事件。
protected void Simple_DGV_RowCommand(object sender, GridViewCommandEventArgs e)
{
OnRowCommand(e);
}
protected void OnRowCommand(GridViewCommandEventArgs e)
{
if (GridRowCommand != null)
GridRowCommand(this, e);
}
定义事件的委托。
public delegate void RowCommand(object sender, GridViewCommandEventArgs e);
public event RowCommand GridRowCommand;
在父页面中添加RowDataBound
的事件处理程序。
BoundField b2 = new BoundField();
Inc_GridView1.Columns.Add(b2);
// 空白列用于添加删除图像
在RowDataBound
事件中,添加一个图像按钮到空白列。
void Inc_GridView1_GridRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
int x = Inc_GridView1.Columns.Count - 1;
// 空白列索引
ImageButton img1 = new ImageButton();
img1.ID = "img1";
img1.ToolTip = "Delete";
img1.ImageUrl = "icons-del.gif";
e.Row.Cells[x].Controls.Add(img1);
ImageButton img2 = (ImageButton)e.Row.Cells[x].Controls[0];
img2.CommandName = "Delete";
img2.CommandArgument = DataBinder.Eval(e.Row.DataItem, "c").ToString();
// 删除命令的参数
img2.OnClientClick = "return confirm('Do you want to delete this Record?');";
// 按钮点击时的确认
}
}
现在添加处理删除功能的代码。
void Inc_GridView1_GridRowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
int param = Convert.ToInt32(e.CommandArgument);
// 删除行的函数
}
}