zoukankan      html  css  js  c++  java
  • C# asp.net repeater实现排序功能,自动排序,点击头部排序,点击列排序

    在网上看到好多关于repeater排序的,自己动手用了,发现一些问题,贴源码后把发现的问题以及解决方法给出

    repeater实现排序功能(单击升序排列,再单击降序排列).原理很简单,在<TD>中加个Onclick,用它来触发一个LinkButton的服务器事件.LinkButton的服务器事件里重新对数据源进行排序.然后再绑定Repeater.
    要实现,首先需要在HTML里面加个javascript函数和两个Hidden,一个用来储存要排序的字段,还有一个用来储存升序还是降序.(asc/desc)
    Javascript代码如下:

    要引用JQ框架

    <script language="javascript">
        function Getsort(obj)
        {
    $("#sortTitle").val(obj);
         //给sortTitle赋值,要有name值
         //如果您没有引用是JQ,用document . getElementById ( sID )  此处不教大家怎么用js给控件赋值 以及取值了
    var sortOrder=$("#<%=sortOrder.ClientID %>").val();
        //获取sortOrder值,并判断,如果一样就重新赋值,值前面有个空格,为了sql语句中用的时候方便
               
       if (sortOrder == ' ASC'
      {  
         $("#<%=sortOrder.ClientID %>").val(" DESC")  
      }
        else
      {   
         $("#<%=sortOrder.ClientID %>").val(" ASC")  
      }
      __doPostBack('ctl00$ContentPlaceHolder1$btnSort','');
        
      }  
           
    </script>
    //一,18行应为 __doPostBack('此处应找到找到源码中__doPostBack事件,直接复制过来,细心您会
    //发现他把客户端Id中的_变成了$','');__doPostBack前面是两个_ _
    //比如我的LinkButton Id是btnSort  那么上面就应该写为 
    // __doPostBack('ctl00$ContentPlaceHolder1$btnSort','');
    //客户端Id是ctl00_ContentPlaceHolder1_btnSort,也许你的不是,自己找


    HTML中:

    <input type="hidden" id="sortTitle" name="sortTitle" />
    <input type="hidden" id="sortOrder" runat="server" value=" ASC" name="sortOrder" /> //我的ASC前面有个空格
    <asp:LinkButton ID="btnSort" runat="server" name="btnSort" OnClick="btnSort_Click"></asp:LinkButton>
    <td onclick="Getsort('num');">
          <b>单击此处可排序</b>
    </td>


    后台代码如下:

    private void Page_Load(object sender, System.EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            BindData();
        }
       protected void btnSort_Click(object sender, EventArgs e)
            {
              在这个方法里面重新绑定调用Repeater就行了
                 BindData();
            }
        public void BindData(int pageIndex, string where)
            {
                  
            string sortTitle = Request.Form["sortTitle"];
            if (sortTitle == "" || sortTitle == null)
                sortTitle = "Id";
                       //默认第一次加载按照id排序
            string order = sortTitle + sortOrder.Value;
                      //这样就获取了 order 的排序,写到你的sql语句排序中就行了,完毕
                      //第一个我用客户端空间,第二个用的是服务器端控件,runat="server" ,注意
            }
      
    }

    上面主要列举了排序功能实现的代码.在HTML中的onclick中,您可以给Getsort方法不同的参数以获得对不同的字段进行排序,注意, Getsort方法的参数一定要设置为你想排序的字段名称.这样你就可以实现双击不同的列头进行当前列的排序功能.

     整个实现的重点在设置 Repeater的sort属性,BindData事件中获取(在哪获取都行)当前排序的字段和排序顺序的String,然后传给 BindData方法.此方法根据传来的参数将DataView的Sort重新设置或者写到你sql语句中,然后绑定Repeater控件.OK!

  • 相关阅读:
    atitit.ntfs ext 文件系统新特性对比
    Atitit.图片木马的原理与防范 attilax 总结
    Atitit.图片木马的原理与防范 attilax 总结
    Atitit.jdk java8的语法特性详解 attilax 总结
    Atitit.jdk java8的语法特性详解 attilax 总结
    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216
    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216
    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
    Atitit.跨平台预定义函数 魔术方法 魔术函数 钩子函数 api兼容性草案 v2 q216  java c# php js.docx
  • 原文地址:https://www.cnblogs.com/ken-admin/p/6405743.html
Copyright © 2011-2022 走看看