在网上看到好多关于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. codeforces round #394 (div. 2) A\B 题解

    开始啦~ 始まった T1 #include <stdio.h> int l,r,even,odd; void Jud(){ for(int i=1;i<=200;i++){ for( ...

  2. angular中多个promise的合并处理

    all()方法 这个all()方法,可以把多个primise的数组合并成一个.当所有的promise执行成功后,会执行后面的回调.回调中的参数,是每个promise执行的结果.当批量的执行某些方法时, ...

  3. at24c02系列和at24c256系列的比较

    编号的含义: at24c02系列包括的有: 128(1K),256(2K),512(4K),1024(8K),2048(16K)字节(B) at24c256系列包括的有: 16384(128K),32 ...

  4. ansible plugins简介

    ansible插件是增强ansible的核心功能的代码片段,ansible使用插件架构来实现丰富,灵活和可扩展的功能集. Ansible提供了许多方便的插件,您可以轻松编写自己的插件. 下边简单介绍A ...

  5. HDU 1212 大整数的取模运算

    因为这里是MOD最大为100000 所以我将字符串看作5个一组,并记录后面跟了多少个100000 每次取5个数根据其数据进行取模更新 注意过程中 100000*100000会超int #include ...

  6. git远程上传文件

    [第一步]建立先仓库 第一步的话看一般的提示就知道了,在github新建一个repository(谷歌可以解决),都是可视化的界面操作,所以难度不大.或者看这里:https://help.github ...

  7. Linux下汇编语言学习笔记76 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  8. 我不喜欢的 Rust 特性 (之一) eager drop

    struct Foo; impl Drop for Foo { fn drop(&mut self) { println!("drop"); } } fn main() { ...

  9. sizeThatFits and sizeToFit

    http://liuxing8807.blog.163.com/blog/static/9703530520134381526554/ sizeThatFits and sizeToFit是UIVie ...

  10. QT如何修改编程语言的字体

    工具-选项,然后在文本编辑器中设置要的字体