添加一个模版列,编辑模版列,并加入一个linkButton ,在onClientClick中加入JavaScript:return confirm('你确定要删除该行记录吗?');
在html中找到那个模版列在其中加入这个属性CommandArgument='<%# Bind("ID") %>'
选中LinkButton的事件Command项,写入LinkButton1_Delete然后在后台代码中这样实现:
protected void LinkButton1_Delete(object sender, CommandEventArgs e)
{
string cateNo=e.CommandArgument.ToString();
bool hehe = CategoryColl.Delete(cateNo);
if (hehe == false)
{
Response.Write(@"<script language=""JavaScript"">alert(""此分类包括日志不能删除!"");
</script>");
}
Show();
}
完成
Gridview的RowCommand事件用法
当单击 GridView 控件中的按钮时发生次事件。
在单击 GridView 控件中的按钮时,将引发 RowCommand 事件。这使您可以提供一个这样的事件处理方法,即每次发生此事件时执行一个自定义例程。
GridView 控件中的按钮也可调用该控件的某些内置功能。若要执行这些操作之一,请将按钮的 CommandName 属性设置为下表中的某个值。
CommandName 值 | 说明 |
---|---|
“Cancel” | 取消编辑操作并将 GridView 控件返回为只读模式。引发 RowCancelingEdit 事件。 |
“Delete” | 删除当前记录。引发 RowDeleting 和 RowDeleted 事件。 |
“Edit” | 将当前记录置于编辑模式。引发 RowEditing 事件。 |
“Page” | 执行分页操作。将按钮的 CommandArgument 属性设置为“First”、“Last”、“Next”、“Prev”或页码,以指定要执行的分页操作类型。引发 PageIndexChanging 和 PageIndexChanged 事件。 |
“Select” | 选择当前记录。引发 SelectedIndexChanging 和 SelectedIndexChanged 事件。 |
“Sort” | |
“Update” | 更新数据源中的当前记录。引发 RowUpdating 和 RowUpdated 事件。 |
尽管单击上表中所列出的按钮时将引发 RowCommand 事件,但仍建议您使用该表中列出的事件来执行该操作。
将 GridViewCommandEventArgs 对象传递到事件处理方法,以便您可以确定被单击按钮的命令名和命令参数。
注意 |
---|
GridViewCommandEventArgs 类未包含一个用于指示单击按钮所在行的属性。如果需要知道哪个行引发了事件,请使用 CommandArgument 属性将行的索引传给事件处理方法。 |
1.下面演示当单击gridview中的一个按钮时删除数据库中的一个记录。
添加一个模版列,编辑模版列,并加入一个linkButton ,在html里把linkButton的CommandName属性设置为del,然后双击gridview的rowCommand产生事情代码,代码如下:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName=="del") { //判断命令名
int index = Convert.ToInt32(e.CommandArgument); //获得该按钮在gridview中的位置,即第几行
GridViewRow row = GridView1.Rows[index]; //通过索引返回该行
string i= row.Cells[0].Text.ToString().Trim(); //获得该行第1列的数据项
DiaryColl.Delete(i);
Show();
}
}
2.下面演示添加自定义分页的用法
在html的gridview中添加分页模板,可以图形化设置,html代码如下:
<PagerTemplate>
共<asp:Label ID="Label1" runat="server" Text='<%#GridView1.PageCount %>'></asp:Label>页
<asp:LinkButton ID="LinkButton2" runat="server" ForeColor="White" CommandName="prev">上一页</asp:LinkButton>
<asp:LinkButton ID="LinkButton3" runat="server" ForeColor="White" CommandName="next">下一页</asp:LinkButton>
</PagerTemplate>
下划线为重点要添加的,然后写rowCommand事件代码,如下:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "prev")
{
if (GridView1.PageIndex != 0)
{
GridView1.PageIndex--;
Show();
}
}
if (e.CommandName == "next")
{
GridView1.PageIndex++;
Show();
}
}
GridView的RowDataBound事件用法
在 GridView 控件中将数据行绑定到数据时发生。
呈现 GridView 控件之前,该控件中的每一行必须绑定到数据源中的一条记录。将某个数据行(用 GridViewRow 对象表示)绑定到 GridView 控件中的数据以后,将引发 RowDataBound 事件。这使您可以提供一个这样的事件处理方法,即每次发生此事件时都执行一个自定义例程(如修改绑定到该行的数据的值)。
GridViewRowEventArgs 对象将被传给事件处理方法,以便您可以访问正在绑定的行的属性。若要访问行中的特定单元格,请使用 GridViewRowEventArgs 对象的 Cells 属性。使用 RowType 属性可确定正在绑定的是哪一种行类型(标题行、数据行等等)。
下面的代码示例演示如何使用 RowDataBound 事件在数据源中的字段值显示在 GridView 控件中之前修改该值。
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
int id=Convert.ToInt32(e.Row.Cells[4].Text); //获得新闻的类别ID
Category c = new Category();
e.Row.Cells[4].Text=c.GetNameById(id); //把新闻的类别ID转换成类别名
}
}