Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这个datagrid会以奇怪的顺序排序?_Javascript_Datagrid_Dojo - Fatal编程技术网

Javascript 为什么这个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

我有一个datagrid,其中每一行都有一列,我定义了一个格式化程序,根据数据库中的内容格式化显示结果,并根据数据库创建一个背景色为的
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,
        ...