• 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的都是一样的。

  • 相关阅读:
    纯线性同余随机数生成器
    读书笔记之:C语言参考手册(第5版)
    读书笔记之:C语言函数库
    读书笔记之:C/C++程序员实用大全—C/C++最佳编程指南
    C++中重要关键字总结
    读书笔记之:C++参考大全
    读书笔记之:C++大学教程(第2版)
    C语言中函数参数入栈的顺序
    ANSI设备驱动器
    可以输出自己的源程序代码(quine)
  • 原文地址:https://www.cnblogs.com/lyl6796910/p/3634888.html
Copyright © 2020-2023  润新知