2012-05-18 4 views
4

Как скрыть полный столбец в dgrid (gridFromHtml) на основе некоторого параметра времени выполнения? Давайте скажем, если значение параметра истинно, я должен иметь возможность отображать некоторый столбец, а если значение ложно, то я должен уметь скрыть тот же столбец.Скрыть столбец в dgrid динамически

ответ

14

Использование grid.styleColumn(columnId, css):

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;"); 
+0

Было бы здорово, если бы был параметр, который вы могли бы передать самим столбцам, которые могли бы сделать они скрыты. есть ли там какая-либо документация по параметрам, которые вы можете пройти? – streetlight

+0

Кроме того, я получаю сообщение об ошибке «Указана недопустимая или незаконная строка». Когда вы проходите мимо, вы видели это раньше? – streetlight

-1

Должен думаю, что это будет работать

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); 
+1

Вопрос в отношении dGrid, а не dojox сетки. https://github.com/SitePen/dgrid –

+0

styleColumn делает 98% того же самого, его можно установить, чтобы использовать braincells: p – mschr

5

Существует dgrid расширение называется ColumnHider, который позволяет передавать в колонке со свойством «скрытой».

require([ 
 
    "dojo/_base/declare", "dgrid/OnDemandGrid", "dgrid/extensions/ColumnHider" 
 
], function(declare, OnDemandGrid, ColumnHider) { 
 
    var grid = new(declare([OnDemandGrid, ColumnHider]))({ 
 
    columns: { 
 
     col1: { 
 
     label: "Column 1", 
 
     hidden: true 
 
     }, 
 
     col2: { 
 
     label: "Column 2", 
 
     unhidable: true 
 
     }, 
 
     col3: "Column 3" 
 
    } 
 
    }, "grid"); 
 
    // ... 
 
});

Это также дает пользователю возможность скрывать свои собственные столбцы. Вы можете установить некоторые столбцы быть unhidable, как колонке 2 выше

0

Вы должны использовать toggleColumnHiddenState:

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 
});