首页  ·  知识 ·  云计算
asp.netrepeater实现排序功能,自动排序,点击头部排序,点击列
网友    综合  编辑:dezai   图片来源:网络
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','');

//此处应为 __doPostBack('此处应找到找到源码中__doPostBack事件,直接复制过来,细心您会发现他把客户端Id中的_变成了$','');__doPostBack前面//是两个_ _

//比如我的LinkButton Id是btnSort  那么上面就应该写为  __doPostBack('ctl00$ContentPlaceHolder1$btnSort',''); 

//客户端Id是ctl00_ContentPlaceHolder1_btnSort,也许你的不是,自己找

    }

 

</script>



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!

 
本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读