repeater中的删除按钮和datagrid下的删除在实现上,还是有一定的区别的,由于repeater在客户端生成的html代码是非常干净的,所以特别受到众多web2.0网站的欢迎(不像datagrid生成的table),但是由于repeater集成了较少的功能,高可定制化,也带来了开发的难度。比如如果在datagrid下面要删除一行数据,那么仅仅是一个linkbutton,然后在datagrid delete command事件中编写删除代码再重新绑定来实现,但是在repeater中,却不能那样做,因为你几乎没有办法再那个事件中定位是哪行触发的删除事件。
方法一
采用的一个QueryString传参数的办法,在前台绑定的时候,采用如下代码:
<td align="center" class="Login2"><a href =User.aspx?Delid=<%#Eval("id")%>>删除</a></td>
后台page_load()代码如下:
protected void Page_Load(object sender, EventArgs e)
{
//注意数据绑定
DelItemByid(); }
protected void DelItemByid()
{
if (Request.QueryString["Delid"] != null)
{
SqlConnection Conn = new SqlConnection(pn163.strConn); Conn.Open();
SqlCommand Cmd = new SqlCommand("delete from Admin where id=" + Request.QueryString["Delid"], Conn);
Cmd.ExecuteNonQuery();
Conn.Close();
Response.Redirect("User.aspx");
Conn.Close();
}
}
方法二
前台:
1)、添加repeater的事件属性 OnItemCommand="Repeater1_ItemCommand"
2)、添加删除按钮
<asp:LinkButton ID="lbtDelete" runat="server" CommandName="delete" CommandArgument='<%# Eval("id") %>' Text="删除" OnClientClick="return confirm('你真的要删除吗?');"></asp:LinkButton>
后台:
1)、写repeater事件OnItemCommand
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) { if (e.CommandName == "delete") //删除操作
{ string que = "delete from [gz_gzsrb] where id='" +e.CommandArgument.ToString().Trim()+ "'"; DBSqlHelp.ExecuteSql(, que);//自己定义的一个DBSqlHelp类,执行sql语句] } }