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!

  • 相关阅读:
    [原]openstack-kilo--issue(二) openstack auth error
    [原]关闭selinux
    [原]Failed to load SELinux policy. System Freezing ----redhat7or CentOS7 bug
    [转]Understanding OpenStack Authentication: Keystone PKI
    第七节:Core SignalR中的重连机制和心跳监测机制详解
    第八节:SQLServer函数大全(一)--字符串函数、数学函数
    第四节:SQLServer数据类型详解
    第三节:从多个角度分析顺序表和链表区别和特点
    第二节:线性表→顺序表→链表 逐个击破
    第一节:时间复杂度和空间复杂度
  • 原文地址:https://www.cnblogs.com/ken-admin/p/6405743.html
Copyright © 2011-2022 走看看