Dojo 动态隐藏dgrid中的列

Dojo 动态隐藏dgrid中的列,dojo,dgrid,Dojo,Dgrid,如何基于某个运行时参数在dgrid(gridFromHtml)中隐藏完整的列? 如果参数值为true,我应该能够显示某个列,如果值为false,那么我应该能够隐藏同一列。应该认为这会起作用 var grid = new dojox.grid.DataGrid({ store: dataStore, structure: [{ name: "ID", field: "id", width: "100px" }, {

如何基于某个运行时参数在dgrid(gridFromHtml)中隐藏完整的列?
如果参数值为true,我应该能够显示某个列,如果值为false,那么我应该能够隐藏同一列。

应该认为这会起作用

var grid = new dojox.grid.DataGrid({

    store: dataStore,
    structure: [{
        name: "ID",
        field: "id",
        width: "100px"
    }, {
        name: "Values",
        field: "values",
        width: "100px"
    }]
}, "myGrid");

grid.startup();

function showOrHideColumn(show, widget, index) {
  var d = show ? "" : "none"
  dojo.query('td[idx="'+index+'"]', widget.viewsNode).style("display", d);
  dojo.query('th[idx="'+index+'"]', widget.viewsHeaderNode).style("display", d);
}

showOrHideColumn(false,grid,0);
使用
grid.styleColumn(columnId,css)


有一个名为ColumnHider的dgrid扩展,允许您传入具有“hidden”属性的列

需要([
“dojo/_base/declare”、“dgrid/OnDemandGrid”、“dgrid/extensions/ColumnHider”
],函数(声明、OnDemandGrid、ColumnHider){
var grid=new(声明([OnDemandGrid,ColumnHider]))({
栏目:{
第1栏:{
标签:“第1列”,
隐藏:真的
},
第2栏:{
标签:“第2列”,
不可回避的:真的
},
第3栏:“第3栏”
}
}“网格”);
// ...
});您需要使用:


问题在于dGrid,而不是dojox网格。styleColumn做了98%相同的事情,设置脑细胞使用是可以的:如果有一个参数可以传递给列本身,让它们隐藏起来,那就太好了。你能传递的参数有没有文档?还有,我得到了一个错误“指定了无效或非法的字符串”。当传递东西时--你以前见过这个吗?有没有其他方法不使用ColumnHider功能,但只需隐藏可重用网格的特定列,并将其提供给用户,而无需用户查看/隐藏columnstoggleColumnHiddenState:函数(id,hidden)的任何选项。看起来它需要的是id,而不是名称。
var grid = new Grid({
    store: store,
    columns: [
        { id: "artist", label: "Artist", field: "Artist"},
        { id: "name", label: "Song", field: "Name"},
        { id: "gerne", label: "Genre", field: "Genre"}
    ]
}, "grid-placeholder");

// to hide column with id="name"
grid.styleColumn("name", "display: none;");

// to show it
grid.styleColumn("name", "display: table-cell;");
require([
    'dojo/_base/declare',
    'dgrid/OnDemandGrid',
    'dgrid/extensions/ColumnHider'
], function (declare, OnDemandGrid, ColumnHider) {
    var grid = new (declare([ OnDemandGrid, ColumnHider ]))({
        columns: {
            'id': {label: '#'},
            'name': {label: 'Название'}
        }
    }, 'grid');

    grid.toggleColumnHiddenState('name', true);  // hiding 
    grid.toggleColumnHiddenState('name', false); // showing 
    grid.toggleColumnHiddenState('name');        // toggling column
});