在网上看到好多关于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!

C# asp.net repeater实现排序功能,自动排序,点击头部排序,点击列排序的更多相关文章

  1. JS实现前台表格排序功能

    JS实现前台表格排序功能 虽然数据量不大的情况下,前台排序速度比较快,但一般情况下,我们的项目只使用后台排序,原因有二: 一是代码简单:二是前台JS排序对于有分页的情况无法处理. 前段时间,有个功能需 ...

  2. iot表输出按主键列排序,heap表不是

    <pre name="code" class="html"> create table t1 (id char(10) primary key,a1 ...

  3. 禁用datagridview中的自动排序功能

    把datagridview中的自动排序功能禁用自己收集的两种方法,看看吧①DataGridView中的Columns属性里面可以设置.进入"EditColumns"窗口后,在相应的 ...

  4. yii去掉自动排序功能

    Yii去掉自动排序功能并自定义排序 public function search($params) { $query = SvnManage::find()->addOrderBy([ 'cre ...

  5. Asp.net mvc 5 CRUD代码自动生成工具- vs.net 2013 Saffolding功能扩展

    Asp.net mvc 5 CRUD代码自动生成工具 -Visual Studio.net2013 Saffolding功能扩展 上次做过一个<Asp.net webform scaffoldi ...

  6. MVC5 Entity Framework学习参加排序、筛选和排序功能

    上一篇文章实现Student 基本的实体CRUD操作.本文将展示如何Students Index页添加排序.筛选和分页功能. 以下是排序完成时.经过筛选和分页功能截图,您可以在列标题点击排序. 1.为 ...

  7. 一种基于自定义代码的asp.net网站首页根据IP自动跳转指定页面的方法!

    一种基于自定义代码的asp.net网站首页根据IP自动跳转指定页面的方法! 对于大中型网站,为了增强用户体验,往往需要根据不同城市站点的用户推送或展现相应个性化的内容,如对于一些大型门户网站的新闻会有 ...

  8. YII关联字段并带搜索排序功能

    1.简介 从接触yii框架到现在已经快有两个月了,但是自己对yii框架的了解程度并不是很深,并没有系统地去学习,仅仅只是在做项目的时候遇到不懂得知识才去翻手册. 在上一个项目中因为需要将关联的表的字段 ...

  9. php接口实现拖拽排序功能

    列表拖拽排序是一个很常见的功能,但是后端接口如何处理却是一个令人纠结的问题 如何实现才能达到效率最高呢 先分析一个场景,假如有一个页面有十条数据,所谓的拖拽就是在这十条数据来来回回的拖,但是每次拖动都 ...

随机推荐

  1. linux设置系统时间与各种阻塞

    前阵子做了一个P2P的通信系统,发现开机的时候和中间运行的时候会莫名报错,这个问题找了好久,后来从日志中看出来,所有节点上阻塞的操作同时超时. 而在超时左右,有新节点自动加入系统. 在新节点加入系统的 ...

  2. 利用tempalte.js模版引擎渲染页面,作对应的数据处理

    需要启个服务 需引入jquery.js和template.js <!DOCTYPE html> <html lang="en"> <head> ...

  3. SHA256兼容性

    SHA-2是一个加密哈希(Cryptographic Hash)函数的一个集合,包括SHA-224,SHA256和SHA-512.在SHA-256中的256代表哈希(Hash)输出或者摘要的位尺寸(即 ...

  4. 文化之旅 2012年NOIP全国联赛普及组

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超 ...

  5. android调试

    要进行调试,首先构建app的时候必须选择是Debug模式,而不能是Release模式. 接下来的内容转载自: http://www.cnblogs.com/gaoteng/p/5711314.html ...

  6. 如何取消codeblocks对msvcr100.dll的依赖?

    用VS2010或是codeblocks开发的程序,在开发之外的机器上,可能会提前缺少msvcr100.dll之类的文件. 可以用如何设置,取消其对库文件的依赖. 当然,还要注意创建程序的类型.(补) ...

  7. W3School Redis教程(安装/基本操作/高级操作/命令/官方文档/官方集群教程)

    说明:Redis有自身的客户端连接软件,也可以使用Telnet进行连接操作. 来自W3School的Redis教程,基本上涵盖了从安装到状态监控的教程. W3School:https://www.gi ...

  8. 29、Java并发性和多线程-非阻塞算法

    以下内容转自http://ifeve.com/non-blocking-algorithms/: 在并发上下文中,非阻塞算法是一种允许线程在阻塞其他线程的情况下访问共享状态的算法.在绝大多数项目中,在 ...

  9. sqlalchemy foreign key查询和backref

    首先在mysql中创建两个表如下: mysql) , primary key(id)); Query OK, rows affected (0.01 sec) mysql),user_id int, ...

  10. Ubuntu18.04卸载lnmp

    1.卸载 apache2 sudo apt-get --purge remove apache2* sudo apt-get autoremove apache2 (--purge 是完全删除并且不保 ...