Extjs Grid 排序

首先,需要给所有需要排序的字段设置属性sortable: true,参考示例代码:

// create the grid
var grid = new Ext.grid.GridPanel({
el:'grid-products',
width:405,
height:300,
title:'Adventure Works Products',
store: store,
stripeRows: true,
loadMask: true,
enableHdMenu: false,

// grid columns
columns:[{
header: "id",
id: 'ProductID',
dataIndex: 'ProductID',
hidden:true
},{
header: "Product Name",
dataIndex: 'Name',
width: 200,
sortable:true
},{
header: "Product Number",
dataIndex: 'ProductNumber',
width: 100,
sortable:true
},{
header: "Safety Stock Level",
dataIndex: 'SafetyStockLevel',
width: 100
}],
// put paging bar on the bottom
bbar: pagingBar
});


这样你就可以在客户端进行排序了。如果需要在服务器端进行排序,则需要设置属性 remoteSort: true, 参考示例代码:

// create the Data Store
var store = new Ext.data.JsonStore({
root: 'lstProducts',
totalProperty: 'RowCount',
idProperty: 'ProductID',
fields: [
'Name','ProductID', 'ProductNumber', 'ReorderPoint','SafetyStockLevel'
],
remoteSort:true,
proxy:pmProxy
});


现在,所有排序的信息将汇聚到PageMethodProxy,主要是两个:
* sort : 表示字段的id
* dir : 排序的方式(有两个 ASC 或 DESC)

或许需要修改下PageMethodProxy,参考如下:

Ext.data.PageMethodProxy = function(config){
Ext.data.PageMethodProxy.superclass.constructor.call(this);
Ext.apply(this, config);
};

Ext.data.PageMethodProxy.TRANS_ID = 1000;
Ext.data.PageMethodProxy.arr_trans = Array();

Ext.extend(Ext.data.PageMethodProxy, Ext.data.DataProxy, {
load : function(params, reader, callback, scope, arg) {
if(this.fireEvent("beforeload", this, params) !== false){
var p = Ext.apply(params, this.extraParams);
var transId = ++Ext.data.PageMethodProxy.TRANS_ID;
var trans = {
id : transId,
params : params,
arg : arg,
callback : callback,
scope : scope,
reader : reader
};
if(typeof p.sort == "undefined")
p.sort = "";
if(typeof p.dir == "undefined")
p.dir = "";

eval("PageMethods." + this.pageMethod + "(p.start,p.limit,p.sort,p.dir,this.handleResponse)");

Ext.data.PageMethodProxy.arr_trans[Ext.data.PageMethodProxy.TRANS_ID] = trans;
}
else{
callback.call(scope||this, null, arg, false);
}

},

isLoading : function(){
return this.trans ? true : false;
},

abort : function(){
if(this.isLoading()){
this.destroyTrans(this.trans);
}
},

handleResponse : function(o){
var trans = Ext.data.PageMethodProxy.arr_trans[Ext.data.PageMethodProxy.TRANS_ID];
var result;
try {
result = trans.reader.readRecords(o);
}catch(e){
this.fireEvent("loadexception", this, o, trans.arg, e);
trans.callback.call(trans.scope||window, null, trans.arg, false);
return;
}
this.trans = false;
trans.callback.call(trans.scope||window, result, trans.arg, true);
}
});


服务器端查询排序程序主要写法如下(此处用ASP.NET)

[System.Web.Services.WebMethod]
public static ProductList GetProducts(int PageNumber,int MaximumRows,string SortColumnName, string SortDirection)
{
//calculating the start row index
int Start = PageNumber + 1;
//calculating the end row index
int End = PageNumber + MaximumRows;

ProductList productList = new ProductList();
//setting up sql connection to execute the query
SqlConnection sqlConnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True");
sqlConnection.Open();
//setting up the command object with a parameterized query and sql connection
using (SqlCommand command = new SqlCommand(GetQuery(SortColumnName,SortDirection), sqlConnection))
{
//Creating Sql Start Paramter
SqlParameter StartParameter = new SqlParameter();
StartParameter.DbType = DbType.Int32;
StartParameter.ParameterName = "startRowIndex";
StartParameter.Value = Start;
//Creating Sql End Parameter
SqlParameter EndParameter = new SqlParameter();
EndParameter.DbType = DbType.Int32;
EndParameter.ParameterName = "endRowIndex";
EndParameter.Value = End;
//Adding Start Parameter to the command object
command.Parameters.Add(StartParameter);
//Adding End Parameter to the command object
command.Parameters.Add(EndParameter);
//Executing Reader
using (IDataReader reader = command.ExecuteReader())
{
//Creating a list of objects from the fetched rows
while (reader.Read())
{
productList.lstProducts.Add(ConstructProduct(reader));
}
}
}
//closing the connection
sqlConnection.Close();
//Assigning total row count for the given query so that it can
//be used by the grid to set up total number of pages
productList.RowCount = GetRowCount();
return productList;
}

private static String GetQuery(String ColumnName,String SortDirection)
{

StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append(" SELECT * FROM ( ");
if(!ColumnName.Trim().Equals(String.Empty) && !SortDirection.Trim().Equals(String.Empty))
stringBuilder.Append(" SELECT ROW_NUMBER() OVER (ORDER BY "+ColumnName.Trim().ToUpper()+" "+ SortDirection.Trim().ToUpper()+") AS row_num,ProductID,[Name],ProductNumber,SafetyStockLevel,ReorderPoint ");
else
stringBuilder.Append(" SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 0)) AS row_num,ProductID,[Name],ProductNumber,SafetyStockLevel,ReorderPoint ");
stringBuilder.Append(" FROM Product ");
stringBuilder.Append(" ) AS TempTable WHERE row_num>=@startRowIndex AND row_num<=@endRowIndex ");
return stringBuilder.ToString();
}

Extjs grid 中文排序问题修正 Extjs grid 中文排序问题修正,其实很简单,请自己看源代码 立即下载

相关推荐

【STM32】IEC60730 Class B软件安全实现 Part2:自检库实战指南

本文是STM32 IEC60730 Class B软件安全实现的实战指南,详细介绍了如何将X-CUBE-CLASSB自检库集成到用户项目中。内容涵盖软件包解构、内存划分、启动与运行时自检的集成步骤、关键代码示例及调试技巧,并阐述了为最终通过安全认证所需的文档与流程准备,帮助开发者高效实现MCU功能安全。

weixin_29185167的博客 91

extjs grid表格数据 默认排序 或者自定义排序

默认按某一列排序,在该表格的存储单元里配置 sortable:true, sorters:[{property:"CODEPOOL",direction:"ASC"}], //给定一个默认的排序方式 ASC为升序 DESC为降序 如下 var store0 = new Ext.data.Store({ autoLoad : true, ...

JavaCoder_juejue的博客 5289

基于稀疏表示字典学习的图像超分辨率-杨建超论文解析

文章:《Image Super-Resolution via Sparse Representation》 作者:杨建超 信号稀疏的定义: 令字典D的原子个数M,信号维度为N,则有以下三种关系: M = N时,D为完备的; M > N时,D为冗余的; M>>N时, D为过完备的。 图解如下: 借鉴了压缩感知的思想,通过对大量低分辨率图像和高分辨...

ycc18829026593的博客 7637

ExtJS的grid排序

grid的排序分为2种: 1.内存排序,根据当前已有的数据进行排序,不予后台交互 2.后台排序,将排序的字段和排序方式,以字符串的形式传递到后台,后台接受到之后对数据进行一个排序返回。 注意:这2个排序都是基于store的。什么叫基于store呢,就是表格本来没有数据,是通过store来发送请求得到数据的。数据在store中,所以可以内存排序。那么后台排序,在点击排序后是让store发送请求

lvhao2813的博客 4856

3D打印必备:如何用Blender将NWD文件转成STL(附精度调整技巧)

本文详细介绍了如何使用Blender将NWD文件转换为STL格式,特别针对3D打印需求提供了精度调整技巧。从环境准备到分步转换流程,再到3D打印专属优化策略,帮助设计师解决破面、尺寸偏差等常见问题,实现高效、精准的格式转换。

week9的博客 272

四自由度SCARA机器人的运动学和动力学MATLAB建模与仿真

本文介绍了四自由度SCARA机器人的运动学和动力学建模,使用MATLAB进行了相应的建模与仿真。通过正运动学和动力学分析,可以了解机器人在不同状态下的运动特性和力学特性。这为后续的控制算法设计和性能优化打下了基础。希望本教程对学习SCARA机器人有帮助。

小蜗牛的珍贵百宝箱 3638

pagehelper对于排序的支持

pagehelper库(https://github.com/pagehelper/Mybatis-PageHelper)是java后端开发领域比较常用的分页插件库,能够很好的实现分页需求。这次记录一下他的另外一个功能,就是在分页的同时传入自定义的排序条件,比如会遇到如下需求,分页查询某些表格数据后,再对某个字段进行升序或降序排序。 设置排序的源码如下(PageMethod): /** ...

shining的专栏 2387

Xilinx XDMA驱动代码分析及用法

Xilinx XDMA驱动代码分析及用法 先简单的介绍一下,赛灵思的XDMA的驱动是用于做什么的、他的主要功能就类似与网卡pcie接口的网卡驱动、用于控制主机与fpga设备进行pcie的通讯。通讯的主要方式是设备文件的读写,这里不清楚的同学可以看一下我上一篇文章。通过控制设备文件的读写,操作驱动与fpga设备进行数据传输。 1、目录结构 zacha@Superman:~/nfs/xdma-debug/dma_ip_drivers-master/XDMA/linux-kernel$ tree -C . ├──

恍恍惚惚的大穷猫的博客 3万+

Extjs4 grid的排序

grid支持两种排序方法 一种是前端排序,不请求后台本页面列字段进行排序,在grid的列中设置属性sortable: true, 第二种排序是后台排序,请求后台对整个数据进行排序,在store中设置属性remoteSort: true, 第一种排序代码:var grid = Ext.create('Ext.grid.Panel', { title: '任务计划管理列表', r

qq_26847293的博客 3362

[VCS]VCS dump fsdb的精细化控制

本文介绍了VCS FSDB波形dump的精细化控制方法。主要内容包括:1)基本dump方式;2)通过$fsdbDumpoff排除特定层次;3)使用$fsdbDumpvars选择性dump指定模块;4)运行时动态控制dump开关;5)通过文件管理排除列表($fsdbDumpoffFile或自定义读取);6)层次控制策略(剪除整棵树或仅当前层)。这些方法可有效控制波形文件大小,提高仿真效率。

元直的博客 1033

《手把手教你YOLOv9实战》,改进专栏目录

为了提供友好的操作效果,本专栏将会手把手搭建可视化界面,我将用PyQt5 搭建一个可视化界面,可视化界面能够实现基本的图像加载与检测功能,如支持视频、摄像头,还支持更换不同的 YOLOv9 模型,并适应不同领域(如口罩检测系统、人脸检测系统、工业缺陷检测系统等),界面灵活、功能强大。通过YOLOv9加以改进设计,形成新的算法框架,一起水科研和论文,专栏会一直持续更新中,本专栏适合目标检测、分割、分类。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2155

Mybatis自定义分页插件及PageHelper源码分析

Mybatis作为一个应用广泛的优秀的ORM开源框架,这个框架具有强大的灵活性,在四大组件(Executor、StatementHandler、ParameterHandler、ResultSetHandler)处提供了简单易用的插 件扩展机制。Mybatis对持久层的操作就是借助于四大核心对象。MyBatis支持用插件对四大核心对象进行拦截,对mybatis来说插件就是拦截器,用来增强核心对象的功能,增强功能本质上是借助于底层的动态代理实现的,换句话说,MyBatis中的四大对象都是代理对象。

qq_48157004的博客 2331

基于 YOLOv26 的电路焊点虚焊检测系统:AI 质检实战

本文介绍了一种基于YOLOv26的电路焊点虚焊检测系统,利用深度学习技术实现自动化质检。系统能识别虚焊、桥接、少锡等8种常见焊点缺陷,具有高精度、实时性和强鲁棒性等特点。文章详细阐述了系统架构,包括数据采集、预处理、YOLOv26检测模型和后处理模块,并提供了代码实现的关键部分,如数据预处理增强和模型训练配置。该系统可显著提高电子制造业的质检效率和准确性。

一键难忘的博客 692

Extjs4 Grid表格按中文排序和按数字大小排序

按中文排序: Ext.data.Store.prototype.createComparator = function(sorters){ return function(r1, r2){ var s = sorters[0], f=s.property; var v1 = r1.data[f], v2 = r2.data[f]; ...

ssrswk9的博客 1104

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Extjs Grid默认排序设置

在使用ExtJs 的Grid组件时,有时候会有一些特别个性的需求,比如排序。 在Extjs中grid列排序,默认是先升序再降序,如果需要先降序再升序,grid没有提供配置项, 通过查看Extjs源代码,我发现可以通过覆盖其possibleSortStates属性便可自定义是先升序还是先降序: possibleSortStates: [ 'DESC','ASC'] ,该配置项的值是一个数组,数...

weixin_30270889的博客 474

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Extjs4 grid按字段排序

Extjs版本ext-4.0.2agrid支持两种排序方法一种是前段排序,不请求后台本页面列字段进行排序在grid的列中设置属性sortable: true,第二种排序是后台排序,请求后台对整个数据进行排序,在store中设置属性remoteSort: true,第一种排序代码: Js代码 vargrid=Ext.create('Ext.grid.Pan...

weixin_30746117的博客 408

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ExtJS5 - 用鼠标拖拽Grid行进行排序及选择

对Grid中的数据进行手动排序,以及在多个Grid之间相互移动行数据是比较常见的业务逻辑。利用Ext.grid.plugin.DragDrop类,可方便地实现这一效果。

般若 6795

根据Extjs中grid列表表头自动排序导出数据的实例

在上个项目中,

曾先森的专栏 3211

extjs4.0 解决grid中文排序错乱问题~~~

因为extjs grid中文排序是按照ascii码排的,所以排序错乱,我的思路就是先把中文转成拼音,然后再排序应该就可以    测试所用   Ext.apply(Ext.data.SortTypes, { asString : function(value) { // expects an object with a first and last name property if

努力 吃饭~~~~ 1万+

ExtJs Grid排序的时候传递自定义参数

ExtJs的Grid的标题头在默认情况下的排序是调用store.load({params:{start:0, limit:25}})方法的 而这个load方法是在js代码一加载里面的参数就固定了,如果我们想在排序的时候添加自己的参数,而参数值又是动态变化的,比如切换的ext tab的title值或者tbar,bbar里面的输入框的值,这些值变化了就没办法传递到load的params中。

glcgeek的专栏 703

SpringBoot整合POI-TL实现高效Word报表生成

文档自动化处理是现代企业系统中的常见需求,尤其涉及Word报表生成时,传统Apache POI的复杂API往往带来开发效率瓶颈。基于模板引擎的技术方案通过分离样式与数据逻辑,显著提升文档处理效率。POI-TL作为轻量级Word模板引擎,采用类似Thymeleaf的{{变量}}语法,支持表格、列表等复杂结构渲染。结合SpringBoot的自动配置特性,开发者可以快速构建RESTful接口实现文档批量生成。该方案在电商订单、合同文书等场景表现优异,单文档生成耗时可控制在120ms内,且通过模板热更新实现零代码修

weixin_33984032的博客 625

ExtJS与.NET结合开发实例(Grid之数据显示、分页、排序篇)

最近园子里有很多朋友关心ExtJS,我最近写了一个项目管理工具用到ExtJS,我结合.NET写了个关于Grid实现的一个实例供需要的朋友参考。 本实例开发环境是:Windows XP + Sql Server 2005 + IIS6+VS 2008 Beta2(.NET Framework3.5) 实现步骤: 1.取数据源 这里是从数据库里读取...

172

Extjs4之Grid监听排序事件

var grid = Ext.create('Ext.grid.Panel', {       border: true,       stripeRows: true,       columns: [           { xtype: 'rownumberer' },           { text: '学期', dataIndex: 'schoolTerm', align: 

书写人生 3626

Extjs Grid 中文排序

Ext.data.Store.prototype.createComparator = function(sorters){ return function(r1, r2){ var s = sorters[0], f=s.property; var v1 = r1.data[f], v2 = r2.data[f];

ˉ-_lishk_-ˉ 842

ExtJS4.2学习(四)Grid表格中文排序问题(转)

鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-07/173.html ----------------------------------------------------------------------------------------- 如果不进行任何排序的设置,Extjs有默认的排...

weixin_30544657的博客 94
上一篇: Ubuntu下Opera中文输入法问题
下一篇: HowTo: Install guest additions for VirtualBox on Debian Lenny 5.0
pythoner
博客等级 码龄18年 15粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值