ノックアウトを使用して、テーブルの列を簡単に非表示/表示できます。シンプルですが効果的な方法はvisible
、列のバインディングを使用してその可視性を制御することです。
これはアイデアを示すフィドルです: http://jsfiddle.net/Ex9J9/42/
編集 - Knockout リソースの 404 エラーを修正するためにフィドルを更新
見る:
<h4>Select Columns:</h4>
<ul data-bind="foreach: gridOptions.columns">
<li>
<label>
<input type="checkbox" data-bind="checked: isVisible" /> <span data-bind="text: header"></span>
</label>
</li>
</ul>
<hr>
<table>
<thead>
<tr data-bind="foreach: gridOptions.columns">
<th data-bind="visible:isVisible, text: header"></th>
</tr>
</thead>
<tbody data-bind="foreach: people">
<tr data-bind="foreach: $parent.gridOptions.columns">
<td data-bind="text: $parent[dataMember], visible:isVisible"></td>
</tr>
</tbody>
</table>
ビュー モデル:
var vm = {
gridOptions: {
columns: [{
header: 'First Name',
dataMember: 'firstName',
isVisible: ko.observable(true)
}, {
header: 'Last Name',
dataMember: 'lastName',
isVisible: ko.observable(true)
}]
},
people: [{
firstName: 'Bert',
lastName: 'Bertington'
}, {
firstName: 'Charles',
lastName: 'Charlesforth'
}, {
firstName: 'Denise',
lastName: 'Dentiste'
}]
};
ko.applyBindings(vm);