ASP.NET巧妙利用repeater控件和checkBox控件实现批量操作
2015-08-20 11:17
615 查看
一般的CMS(Content Manager System)中,不可避免的会涉及批量操作。比如显示一页数据,一个良好的设计都会加上批量删除、批量推荐等操作。
在ASP.NET中,做这样的批量操作非常简单,以批量删除为例,我们仅需要checkBox控件用来多选,外加一个批量删除按钮。显示数据这里采用repeater控件。
下面是我的工程中一段代码:
aspx前台文件代码:
[html]
view plaincopyprint?
<table>
<tbody>
<tr>
<thclassthclass="th_CheckBox"></th>
<thclassthclass="th_Floor">楼层号</th>
<thclassthclass="th_Room">房间号</th>
<thclassthclass="th_ComputerNumber">电脑编号</th>
<thclassthclass="th_ProName">问题名称</th>
<thclassthclass="th_ProType">问题类型</th>
<thclassthclass="th_ProDescription">问题描述</th>
<thclassthclass="th_Operate">操作</th>
</tr>
<asp:RepeaterIDasp:RepeaterID="UnProRepeater" runat="server">
<ItemTemplate>
<tr>
<td><asp:CheckBox ID="cdDelete" ToolTip='<%#Eval("id") %>' Text="" runat="server"/></td>
<td><%# Eval("floor") %></td>
<td><%# Eval("rmNumber")%></td>
<td><a href='addU
4000
nFinishedPro.aspx?id=<%# Eval("id")%>'><%# Eval("cmNumber")%></a></td>
<td><%# Eval("name") %></td>
<td><%# Eval("typeName")%></td>
<td><%# cutString(Eval("description").ToString(),15,"...")%></td>
<td><asp:LinkButton ID="lbtnDelete"CommandArgument='<%# Eval("id") %>' OnClientClick="returnconfirm('真的要删除吗?')" OnClick="lbtnDelete_Click"runat="server">删除</asp:LinkButton></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tbody>
</table>
大家不要被这么代码吓到了,真正有用的只有第一个<tr></tr>块里的<th class="th_CheckBox"></th>,目的是给单选框留出一列;第二个<tr></tr>块里的<td><asp:CheckBox ID="cdDelete" ToolTip='<%#Eval("id") %>' Text="" runat="server"/></td>,真正的显示checkBox控件。其中ToolTip属性是为了携带记录id,有了记录id我们才能操作这条记录。为啥用这个属性呢?因为只有这个属性最合适,让人比较意外的是ASP.NET的checkBox竟然没有value属性,找来找去,只有ToolTip这个属性能用来携带id了,而且用户把鼠标放到checkBox上还会显示出记录id,增加了程序的神秘感。把repeater控件绑定数据之后,每条数据前都会多出一个单选框,这样就达到目的了。作为例子,上边这段代码没必要写这么多,但是为了给读者一个完整的展示,还是把代码写全了。
在界面上再添加一个批量删除按钮,前台就搞定了,怎么在批量删除按钮事件中删除选中的项呢?
aspx.cs后台代码:
[csharp]
view plaincopyprint?
protected void btnDelete_Click(object sender, EventArgs e)
{
bool result = true;
//遍历repeater控件的itemtemplate模版
foreach (RepeaterItem item in UnProRepeater.Items)
{
CheckBox cb = (CheckBox)item.FindControl("cdDelete"); //根据控件id获得控件对象,cdDelete是checkBox控件的id
if (cb.Checked == true)
{
//删除操作,根据id删除记录,cb.ToolTip里存放的就是记录id
}
}
//别忘了删除之后要重新绑定数据的哦。。。。。
}
代码中已经加上详细的注释,相信您一看即懂。
通过这个简单的小例子,展示了ASP.NET通过repeater控件和checkBox控件进行批量操作,希望对大家的学习有所帮助!
在ASP.NET中,做这样的批量操作非常简单,以批量删除为例,我们仅需要checkBox控件用来多选,外加一个批量删除按钮。显示数据这里采用repeater控件。
下面是我的工程中一段代码:
aspx前台文件代码:
[html]
view plaincopyprint?
<table>
<tbody>
<tr>
<thclassthclass="th_CheckBox"></th>
<thclassthclass="th_Floor">楼层号</th>
<thclassthclass="th_Room">房间号</th>
<thclassthclass="th_ComputerNumber">电脑编号</th>
<thclassthclass="th_ProName">问题名称</th>
<thclassthclass="th_ProType">问题类型</th>
<thclassthclass="th_ProDescription">问题描述</th>
<thclassthclass="th_Operate">操作</th>
</tr>
<asp:RepeaterIDasp:RepeaterID="UnProRepeater" runat="server">
<ItemTemplate>
<tr>
<td><asp:CheckBox ID="cdDelete" ToolTip='<%#Eval("id") %>' Text="" runat="server"/></td>
<td><%# Eval("floor") %></td>
<td><%# Eval("rmNumber")%></td>
<td><a href='addU
4000
nFinishedPro.aspx?id=<%# Eval("id")%>'><%# Eval("cmNumber")%></a></td>
<td><%# Eval("name") %></td>
<td><%# Eval("typeName")%></td>
<td><%# cutString(Eval("description").ToString(),15,"...")%></td>
<td><asp:LinkButton ID="lbtnDelete"CommandArgument='<%# Eval("id") %>' OnClientClick="returnconfirm('真的要删除吗?')" OnClick="lbtnDelete_Click"runat="server">删除</asp:LinkButton></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tbody>
</table>
大家不要被这么代码吓到了,真正有用的只有第一个<tr></tr>块里的<th class="th_CheckBox"></th>,目的是给单选框留出一列;第二个<tr></tr>块里的<td><asp:CheckBox ID="cdDelete" ToolTip='<%#Eval("id") %>' Text="" runat="server"/></td>,真正的显示checkBox控件。其中ToolTip属性是为了携带记录id,有了记录id我们才能操作这条记录。为啥用这个属性呢?因为只有这个属性最合适,让人比较意外的是ASP.NET的checkBox竟然没有value属性,找来找去,只有ToolTip这个属性能用来携带id了,而且用户把鼠标放到checkBox上还会显示出记录id,增加了程序的神秘感。把repeater控件绑定数据之后,每条数据前都会多出一个单选框,这样就达到目的了。作为例子,上边这段代码没必要写这么多,但是为了给读者一个完整的展示,还是把代码写全了。
在界面上再添加一个批量删除按钮,前台就搞定了,怎么在批量删除按钮事件中删除选中的项呢?
aspx.cs后台代码:
[csharp]
view plaincopyprint?
protected void btnDelete_Click(object sender, EventArgs e)
{
bool result = true;
//遍历repeater控件的itemtemplate模版
foreach (RepeaterItem item in UnProRepeater.Items)
{
CheckBox cb = (CheckBox)item.FindControl("cdDelete"); //根据控件id获得控件对象,cdDelete是checkBox控件的id
if (cb.Checked == true)
{
//删除操作,根据id删除记录,cb.ToolTip里存放的就是记录id
}
}
//别忘了删除之后要重新绑定数据的哦。。。。。
}
代码中已经加上详细的注释,相信您一看即懂。
通过这个简单的小例子,展示了ASP.NET通过repeater控件和checkBox控件进行批量操作,希望对大家的学习有所帮助!
相关文章推荐
- ASP.Net MVC-Web API使用Entity Framework时遇到Loop Reference
- asp.net获取当前时间
- asp.net CheckBox 綁定Boolean 類型
- Asp.mvc ~ 路由
- 选择PHP还是 ASP.NET:你做了正确选择么?(个人观点,但是也是受了行业内大多数人得影响吧)
- WCF 无法激活服务,因为它不支持 ASP.NET 兼容性。已为此应用程序启用了 ASP.NET 兼容性
- WCF 无法激活服务,因为它不支持 ASP.NET 兼容性。已为此应用程序启用了 ASP.NET 兼容性
- asp.net 批量上传图片保存到数据库
- asp.net MVC5 sitemap 的使用
- 图片缩放显示(UIViewContentModeScaleAspectFit) 要 从顶部开始显示的解决方法
- asp网页无法打开
- Asp.Net 请求处理机制
- ASP.NET MVC Json()处理大数据异常解决方法
- aspose.Cells 导出Excel
- casperjs/phantomjs资料收集
- Aspose.Words使用教程之插入文档元素(二)【连载】
- icinga-report+jasperserver+icinga-web安装步骤
- ASP.NET MVC架构与实战系列之一:理解MVC底层运行机制
- 关于asp.net 的一些好资料地址 , 防止丢失!
- asp.net中string和byte[]转换