您的位置:首页 > 其它

简单实现DataGrid添加CheckBox删除记录(转载纳米小心的博客)

2008-09-21 10:23 393 查看
今天项目中需要实现在DataGrid中添加CheckBox以方便删除记录的功能,仔细想了想,以前我的做法有bug,是通过在模板列中添加CheckBox控件,然后循环每个模板列判断该CheckBox是否选中,如果选中则将该CheckBox所在的行索引记下来作为删除的依据。这个方法表面上看删除是没有问题,但是一涉及分页或者是对DataGrid进行了查询后再来删除记录就会有bug,我重新整理了代码,找到了更简单的方法:



首先编辑模板列,然后添加CheckBox控件,另外再添加一个hidden控件,hidden是页面的隐藏域,我用它来保存该行记录的主键,给它的value属性加上服务器代码绑定数据字段

<%# DataBinder.Eval(Container.DataItem, "Code")%>

具体代码如下:

<Columns>

<asp:TemplateColumn>

<ItemTemplate>

<INPUT id=SelectedCode type=hidden value='<%# DataBinder.Eval(Container.DataItem, "Code")%>' runat="server">

<asp:CheckBox id="CBoxDelete" runat="server"></asp:CheckBox>

</ItemTemplate>

</asp:TemplateColumn>

<asp:BoundColumn DataField="Id" HeaderText="编号"></asp:BoundColumn>

<asp:BoundColumn DataField="Code" HeaderText="ID"></asp:BoundColumn>

<asp:BoundColumn DataField="Name" HeaderText="名称"></asp:BoundColumn>

</Columns>

DataGrid设置好之后,在页面上添加一个删除按钮,点按钮删除所有单选框被钩上的记录,cs代码如下:

private void BtnDelete_Click(object sender, System.EventArgs e)

{

System.Web.UI.WebControls.CheckBox CBoxDelete;

foreach (DataGridItem DgItem in DgUser.Items)

{

CBoxDelete=(CheckBox)DgItem.FindControl("CBoxDelete");

if(CBoxDelete.Checked)

{

string Code=((HtmlInputHidden)DgItem.FindControl("SelectedCode")).Value;

//有了Code,删除就很容易做到

MyUser.DeleteUser(Code);

}

}

this.BindDgUser();

}

整体效果见图



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: