zoukankan      html  css  js  c++  java
  • 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" onclick="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' 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>


      这里需要注意的是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

  • 相关阅读:
    回发或回调参数无效。 问题的解决和思考
    母板页中的引用的图片,JS,css等路径问题
    Solution: 题解 CF1196E Connected Component on a Chessboard
    01/05/2020 我注册了博客园 I enrolled in Cnblogs.
    Basic Thought / Data Structure: 前缀和 Prefix Sum
    Basic Thought / Data Structure: 差分 Difference
    DotNet中异步编程(APM)的研究1异步编程介绍
    关于atl server 的感受(3) 一个我自以为豪的应用
    自己的博客,竟然要自己搜出来,太久没来了。
    关于atl server 的感受(2)
  • 原文地址:https://www.cnblogs.com/guanjie20/p/1501918.html
Copyright © 2011-2022 走看看