Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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 如何过滤dojo分类的treeGrid?_Javascript_Dojo_Dojox.grid.datagrid_Dojox.grid - Fatal编程技术网

Javascript 如何过滤dojo分类的treeGrid?

Javascript 如何过滤dojo分类的treeGrid?,javascript,dojo,dojox.grid.datagrid,dojox.grid,Javascript,Dojo,Dojox.grid.datagrid,Dojox.grid,我有dojo treeGrid,它工作得很好。它显示按年度分类的成本项目。它还显示总数。但当我尝试按其中一列进行过滤时,它会弄乱网格(不正确地破坏类别和过滤记录)。我是否正确使用grid.filter?我需要保留分类结构,但删除/过滤某些记录。或者我应该以某种方式刷新jsonStore //HTML <div id="treeGrid"></div> <a href="javascript:void(0)"> <span id='button1

我有dojo treeGrid,它工作得很好。它显示按年度分类的成本项目。它还显示总数。但当我尝试按其中一列进行过滤时,它会弄乱网格(不正确地破坏类别和过滤记录)。我是否正确使用grid.filter?我需要保留分类结构,但删除/过滤某些记录。或者我应该以某种方式刷新jsonStore

//HTML
<div id="treeGrid"></div>

<a href="javascript:void(0)">
    <span id='button1'>Filter</span>
</a>


//JavaScript
var layout = [ 
    { cells: [ 
       [ {field: "year", name: "Year"}, 
         {field: "childItems", 
           children: [ { field: "status", name: "Status"}, 
                       { field: "programname", name: "Program Name"}, 
                       { field: "programcost", name: "Program Cost"}
                     ], 
                  aggregate: "sum" 
                  } 
                  ]] } ]

var jsonStore = new dojo.data.ItemFileWriteStore({ url: "<........>"});

var grid = new dojox.grid.TreeGrid({ 
    structure: layout, 
    store: jsonStore, 
    query: {type: 'year'}, 
    queryOptions: {deep: true},
    rowSelector: true, 
    openAtLevels: [false],
    autoWidth: true,
    autoHeight: true
    }, 
    dojo.byId("treeGrid"));


    /* attach an event handler */
on(dom.byId("button1"),'click',
    function(e){
        grid.filter({status: "Approved"});
    }
   );


grid.startup();

dojo.connect(window, "onresize", grid, "resize");


/* sample data ======================================================
{
  "identifier": "id",
  "label": "name",
  "items": [
    {
      "id": "2018",
      "type": "year",
      "year": "2018",
      "childItems": [
        {
          "status": "Approved",
          "programname": "Program 1",
          "programcost": 100
        },
        {
          "status": "Pending",
          "programname": "Program 2",
          "programcost": 200
        }
      ]
    },
    {
      "id": "2016",
      "type": "year",
      "year": "2016",
      "childItems": [
        {
          "status": "Pending",
          "programname": "Program 3",
          "programcost": 300
        }
      ]
    }
  ]
}
*/
//HTML
//JavaScript
变量布局=[
{单元格:[
[{字段:“年”,名称:“年”},
{字段:“子项”,
子项:[{字段:“状态”,名称:“状态”},
{字段:“程序名”,名称:“程序名”},
{字段:“计划成本”,名称:“计划成本”}
], 
合计:“总和”
} 
]] } ]
var jsonStore=new dojo.data.ItemFileWriteStore({url::});
var grid=new dojox.grid.TreeGrid({
结构:布局,
门店:jsonStore,
查询:{type:'year'},
查询选项:{deep:true},
是的,
openAtLevels:[错误],
自动宽度:正确,
自动高度:真
}, 
dojo.byId(“treeGrid”);
/*附加事件处理程序*/
在(dom.byId(“button1”)上,单击,
职能(e){
过滤器({状态:“已批准”});
}
);
grid.startup();
connect(窗口,“onresize”,网格,“resize”);
/*样本数据======================================================
{
“标识符”:“id”,
“标签”:“名称”,
“项目”:[
{
“id”:“2018年”,
“类型”:“年份”,
“年份”:“2018年”,
“儿童项目”:[
{
“状态”:“已批准”,
“程序名”:“程序1”,
“项目成本”:100
},
{
“状态”:“待定”,
“程序名”:“程序2”,
“项目成本”:200
}
]
},
{
“id”:“2016年”,
“类型”:“年份”,
“年份”:“2016年”,
“儿童项目”:[
{
“状态”:“待定”,
“程序名”:“程序3”,
“项目成本”:300
}
]
}
]
}
*/

您能在示例中添加一些示例数据吗?只需将示例数据添加到最底部。谢谢你,Himanshua经过一个小时的反复尝试,我认为问题在于并不是所有的数据字段都有
idAttribute
name
。我已经创建了一个小提琴,在其中过滤和改变商店(相关)是工作。您可能会注意到,我使用了
model
作为
store
grid
之间的接口。为了改变商店,我创建了一个新模型并改变了模型。还要注意,
grid.\u refresh()
没有任何效果。更改也会在没有它的情况下反映出来。很抱歉输入错误,
idAttribute
id
,而不是
name