Javascript 为什么这个datagrid会以奇怪的顺序排序?
我有一个datagrid,其中每一行都有一列,我定义了一个格式化程序,根据数据库中的内容格式化显示结果,并根据数据库创建一个背景色为的Javascript 为什么这个datagrid会以奇怪的顺序排序?,javascript,datagrid,dojo,Javascript,Datagrid,Dojo,我有一个datagrid,其中每一行都有一列,我定义了一个格式化程序,根据数据库中的内容格式化显示结果,并根据数据库创建一个背景色为的div 我的datagrid有以下结构: structure: [ { name: "Name", field: "name", width: "auto" }, { name: "Initials", field: "initials" }, { name: "E-mail", fiel
div
我的datagrid有以下结构:
structure: [
{
name: "Name",
field: "name",
width: "auto"
},
{
name: "Initials",
field: "initials"
},
{
name: "E-mail",
field: "email",
width: "auto"
},
{
name: "Kerberos",
field: "kerberos",
width: "120px",
formatter: function(kerberos){
var format = "";
if(kerberos == "password expired" || kerberos == "account expired"){
format = '<div class="yellow" title="'+kerberos+'">'+kerberos+'</div>';
}else if(kerberos == "ok"){
format = '<div class="green" title="'+kerberos+'">'+kerberos+'</div>';
}else{
format = '<div class="red" title="Has no kerberos account">not available</div>';
}
return format;
}
},
我找到了答案。问题在于
ObjectStore
。由于某些原因,此存储无法正确排序,并且在将存储类型更改为ItemFileReadStore
后,它将正确排序。切换存储的另一个原因是ItemFileReadStore
还支持允许自定义排序的comparatorMap
属性,ObjectStore
不支持此属性
解决方案:
load: function(jsondata){
var store = new ItemFileReadStore({
data: { identifier: "id", items: jsondata }
});
pgrid = new DataGrid({
store: store,
...
只是尝试输入数字(1、2和3)而不是纯文本。。。它的排序仍然与上图相同。我不明白,datagrid是否可以同时基于“kerberos”列和另一列进行排序?我想它应该是有线的,因为我还没有定义where:/可以看到我在寻找一些与comparatorMap等价的东西。我尝试在数据网格上使用comparatorMap(例如:myGrid.comparatorMap[“kerberos”]=function(a,b){};),但没有解决排序问题:/
load: function(jsondata){
var store = new ItemFileReadStore({
data: { identifier: "id", items: jsondata }
});
pgrid = new DataGrid({
store: store,
...