Repeater控件用得不是很多,用起来显示数据非常方便,可以自定义显示的格式,很灵活。性能也要比GridView好多了,但是Repeater没有封装"修改" "删除"等功能,可是有时候却需要这种功能却不想去用GridView。本人就遇到过这种情况,开始只想对数据进行显示没有删除的意思,但是后来考虑到还需要一个删除功能,但分页都已经做好了,不想改用GridView。心想Repeater控件实现删除功能应该不麻烦吧!于是偷懒到百度一搜没找到。 困难就在于怎么取当前行的ID,GridView里可以设置DataKeyName的,在通过取每行的keyname值来取的,而Vs2005的GridView更简单,添加删除完全封装了,不用写额外代码。但Repeater正为了灵活性已经没这属性了,问问群里高手。终于有解决办法了,通过删除按钮Button的CommandName的绑定来取的ID值 CommandName='<%# Eval("ID") %>' ,然后一个 OnCommand="BtnDel_Click"响应事件,对之进行删除
protected void BtnDel_Click(object sender, CommandEventArgs e)
{
int ID = Convert.ToInt32(e.CommandName);
string delSql = "delete from mailbox where id=" + ID;
try
{
DataUse.ExcuteNoqueryUser(delSql);
JSUtil.Alert(this.Page, "删除成功!");
Server.Transfer("Mail_Admin.aspx");
}
catch (Exception ex)
{
JSUtil.Alert(this.Page, ex.Message);
}
}
上面方法的特别之处就是通过CommandName来绑定主键ID值再传给事件里的sql变量
protected void BtnDel_Click(object sender, CommandEventArgs e)
{
int ID = Convert.ToInt32(e.CommandName);
string delSql = "delete from mailbox where id=" + ID;
try
{
DataUse.ExcuteNoqueryUser(delSql);
JSUtil.Alert(this.Page, "删除成功!");
Server.Transfer("Mail_Admin.aspx");
}
catch (Exception ex)
{
JSUtil.Alert(this.Page, ex.Message);
}
}
上面方法的特别之处就是通过CommandName来绑定主键ID值再传给事件里的sql变量