ASP.NET给DataGrid,Repeater等添加全选批量删除等功能
很多情况下,在管理或者查看列表的时候我们需要很需要“全选”这个功能,这在ASP.NET中是非常容易实现的,下面我就将演示一点小代码实现这一功能。
实现全选的还是js的一个小函数:
[code]
function
CheckAll(e,itemname){
var
aa=document.getElementsByName(itemname);
if(aa==undefined)
return;
for (var i=0; i<aa.length; i++)aa[i].checked =
e.checked;
}
[/code]
[b]
先看在asp:Repeater中的实现过程。[/b]
在HeaderTemplate中直接添加全选的一个CheckBox:
[code]<input
name="chkall" value="1" type="checkbox"
onclick="CheckAll(this,‘Item‘)"/>[/code]
在ItemTemplate中绑定的时候只需要给Input设置目前行的ID编号等即可: [code]<td align="center"
><input name="Item" type="checkbox" value=‘<%#
Eval("deal_id")%>‘/></td>
[/code]
然后我们创建一个“全部删除”的LinkButton,当点击的时候执行一个后台代码: [code]<asp:LinkButton
id="LB_Bak_Delete" text="批量删除" OnCommand="LinkButton_Command"
runat="server" CommandName="delete"
visible="false"/>[/code]
所执行的函数名称是LinkButton_Command,给其设置参数CommandName的主要目的就是标记这个操作是删除功能(很多时候还需要生成啊,高亮啊等操作),看看LinkButton_Command的执行:
[code]
protected
void LinkButton_Command(Object sender, CommandEventArgs
e){
string
ids=Request.Form["Item"];
switch(e.CommandName){
case "delete":
BakDelete(ids);
break;
}
Data_List_Load();//重新加载
return
;
}
private void BakDelete(string
ids){
//ODeal是个类
if(!String.IsNullOrEmpty(ids)
&& ODeal.Delete("[deal_id] in ("+ids+")")){
OutMess("批量删除数据成功");
}else{
OutMess("批量删除失败");
}
}
[/code]
[b]
然后我们看看在
DataGrid 或者 DataView中的方法:[/b]
使用的js还是一样的,在前台显示的时候:
[code] <asp:TemplateColumn
HeaderText="<input name=‘chkall‘ value=‘1‘ type=‘checkbox‘
onclick=‘CheckAll(this,JS_Item_Text)‘/>" ItemStyle-Width="30px"
ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center"
HeaderStyle-CssClass="head">
<ItemTemplate><input
name="Item" type="checkbox" value=‘<%#
Eval("td_id")%>‘/></ItemTemplate>
</asp:TemplateColumn>
[/code]
这里需要注意的是CheckAll执行的方法中有个单引号,这里是不能加进去的,就先声明一个js的变量,然后在加载列表的时候写个js客户端注册:
列表ClassGridDataBind的时候,加入:
[code]
string
sScript = "var JS_Item_Text=‘Item‘;";
ClientScriptManager Objcsm
= Page.ClientScript;
if
(!Objcsm.IsStartupScriptRegistered("_JS_Item_Text")){
Objcsm.RegisterStartupScript(this.GetType(), "_JS_Item_Text",
sScript,
true);
}
[/code]
然后其他的和Repeater的都是一样的。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。