ASP.NET给DataGrid,Repeater等添加全选批量删除等功能(转)

很多情况下,在管理或者查看列表的时候我们需要很需要“全选”这个功能,这在ASP.NET中是非常容易实现的,下面我就将演示一点小代码实现这一功能。
  实现全选的还是js的一个小函数:
  
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;
}     


 
  先看在asp:Repeater中的实现过程。

  在HeaderTemplate中直接添加全选的一个CheckBox: 
<input name="chkall" value="1" type="checkbox" οnclick="CheckAll(this,'Item')"/>

  在ItemTemplate中绑定的时候只需要给Input设置目前行的ID编号等即可:
        <td align="center" ><input name="Item" type="checkbox" value='<%# Eval("deal_id")%>'/></td>

 

  然后我们创建一个“全部删除”的LinkButton,当点击的时候执行一个后台代码:
<asp:LinkButton id="LB_Bak_Delete" text="批量删除" OnCommand="LinkButton_Command"  runat="server" CommandName="delete" visible="false"/>


  所执行的函数名称是LinkButton_Command,给其设置参数CommandName的主要目的就是标记这个操作是删除功能(很多时候还需要生成啊,高亮啊等操作),看看LinkButton_Command的执行:
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("批量删除失败");
    }
}

 
 然后我们看看在 DataGrid  或者 DataView中的方法:

  使用的js还是一样的,在前台显示的时候:
    <asp:TemplateColumn HeaderText="<input name='chkall' value='1' type='checkbox' οnclick='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>


  这里需要注意的是CheckAll执行的方法中有个单引号,这里是不能加进去的,就先声明一个js的变量,然后在加载列表的时候写个js客户端注册:
 列表ClassGridDataBind的时候,加入:

    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);
    }

 

  然后其他的和Repeater的都是一样的。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xielingxu/archive/2008/07/28/2726089.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值