EXT中如何按照某一列对数据库所有数据进行排序?默认的只能对当前页的数据进行升序降序排序!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXT中如何按照某一列对数据库所有数据进行排序?默认的只能对当前页的数据进行升序降序排序!相关的知识,希望对你有一定的参考价值。
var memberGridPanel = new Ext.grid.GridPanel(
id : 'grid_member',
store : ds_member,
width : 400,
height : 600,
stripeRows : true,
border : false,
//title : '会员列表',
sm : chkboxselmodel,
columns : [chkboxselmodel, new Ext.grid.RowNumberer(),
header : '会员账号',
width : 100,
sortable : true,
dataIndex : 'loginid'
,
header : '会员名称',
width : 80,
sortable : true,
dataIndex : 'name'
,
header : '性别',
width : 40,
sortable : true,
dataIndex : 'sex',
renderer : function(value)
if(value==1)
return '男';
else if(value==2)
return '女';
,
header : '会员EMAIL',
width : 150,
sortable : true,
dataIndex : 'email'
,
header : '地址',
width : 200,
sortable : true,
dataIndex : 'address'
,
header : '注册时间',
width : 100,
sortable : true,
dataIndex : 'regdate',
renderer : function(value)
return value.format("Y-m-d H:i");
],
怎样才能按照注册时间对数据库所有的数据进行排序·~~
sortInfo :
field : 'CNAME',
direction : 'ASC' //升序排列
在field处替换你要排序的那个字段.
然后再在store中加入remoteSort : true //开启远程排序 参考技术A 这个是需要服务器端代码支持的。首先你得获得排序的字段的名称,从客户端。这个可以在ext里面设置一下。第二,你在服务器端要获得这个排序的字段名称和是升序还是降序的参数。
第一:ext开启服务器排序。需要在grid的store里面设置remoteSort: true。
第二:你需要在服务器端接收排序使用的字段和是升序还是降序的参数。默认传递的字段名称是sort,升降序的参数名称为dir。 参考技术B 只选中本回答被提问者采纳
如何根据一列对查询结果进行排序?
【中文标题】如何根据一列对查询结果进行排序?【英文标题】:How can I sort the result of a query based on the one column? 【发布时间】:2017-05-09 06:34:01 【问题描述】:这是我的查询:
SELECT name, usage_guidance, total_used_num
FROM tags
WHERE
( name LIKE CONCAT('%', ?, '%') OR
usage_guidance LIKE CONCAT(?, '%') ) AND
name NOT IN ($in)
LIMIT 6
现在我想按name
列对结果进行排序。我的意思是我想把匹配的结果因为name LIKE CONCAT('%', ?, '%')
条件放在第一位,然后其他结果应该在它们之后。我该怎么做?
【问题讨论】:
order by name LIKE CONCAT('%', ?, '%') desc, name asc
@juergend 谢谢,你能告诉我你为什么把name asc
写成order by
的第二个参数吗?
不仅按第一个匹配项然后不匹配项进行排序,而且还按名称对这两个组进行排序。因此,所有匹配项都按名称排序,之后也是不匹配项。
@juergend 我明白了,太好了.. 看来您对 MySQL 有很多经验.. 我的最后一个请求,您能看看下面由 Gordon 写的答案吗?告诉我他的观点是where
,order by
?
他告诉你将where
子句的条件也放在order by
子句中,最后加上desc
。基本上和我在评论中说的一样。
【参考方案1】:
您可以将where
条件添加到order by
子句:
order by (name like CONCAT('%', ?, '%')) desc,
(usage_guidance LIKE CONCAT(?, '%')) desc
MySQL 将数字上下文中的布尔表达式视为数字,“1”表示真,“0”表示假。因此,desc
排序。
请注意,usage_guidance
的第二个条件并不是回答问题所必需的。
【讨论】:
嗯?!老实说,您的查询对我来说不清楚..WHERE
子句的另一部分呢? AND name NOT IN ($in)
?我不需要ORDER BY
子句吗?
嗯 MySQL 抛出一个语法错误.. 它说:你不能在 WHERE
子句中使用 desc
。
@stack 。 . .那应该是order by
。
为什么避免在order by
子句中添加AND name NOT IN ($in)
条件(这是where
条件之一)?
@Shafizadeh。 . .问题是关于订购。该部分与订购无关。【参考方案2】:
如果我正确理解您的问题,您希望首先显示匹配 name LIKE %SOMETHING%
的结果。
您可以通过在IF()
语句中设置一个附加的选择字段 来实现这一点,该字段与name
的WHERE
子句的条件相同,并按该字段排序:
SELECT name, usage_guidance, total_used_num, name LIKE CONCAT('%', ? , '%') as sort_field
FROM tags
WHERE
( name LIKE CONCAT('%', ?, '%') OR
usage_guidance LIKE CONCAT(?, '%') ) AND
name NOT IN ($in)
ORDER BY sort_field DESC
LIMIT 6
编辑:我刚刚意识到,您根本不需要 IF()
语句
【讨论】:
以上是关于EXT中如何按照某一列对数据库所有数据进行排序?默认的只能对当前页的数据进行升序降序排序!的主要内容,如果未能解决你的问题,请参考以下文章