2
グリッドの列のチェック/非表示を制限したい。デフォルトのextjs
グリッドで、beforeselect
のイベントまたは設定を列メニューcheckboxes
に適用したいとします。最大許容列が選択され、ユーザーが列をさらに確認しようとすると、エラーメッセージが表示されます。Extjsグリッド限界列の表示/非表示のチェック
私は、事前におかげで案内してください。
グリッドの列のチェック/非表示を制限したい。デフォルトのextjs
グリッドで、beforeselect
のイベントまたは設定を列メニューcheckboxes
に適用したいとします。最大許容列が選択され、ユーザーが列をさらに確認しようとすると、エラーメッセージが表示されます。Extjsグリッド限界列の表示/非表示のチェック
私は、事前におかげで案内してください。
エラーメッセージがユーザーを迷惑にしているので、私はそのエラーメッセージの処理をしません。最大に達したとき、私はこのように、columnshow
イベントに未チェックの列を無効になります。
var doCheckItems = function() {
var showncolumns = Ext.Array.sum(grid.headerCt.query("gridcolumn").map(function(column) {return column.isVisible()?1:0;}));
if(showncolumns >= 5) {
Ext.each(grid.headerCt.getMenu().query("menucheckitem"),function(item) {
if(!item.checked) item.disable();
})
} else {
Ext.each(grid.headerCt.getMenu().query("menucheckitem"),function(item) {
item.enable();
})
}
};
grid.headerCt.on('columnshow',doCheckItems);
grid.headerCt.on('columnhide',doCheckItems);
https://fiddle.sencha.com/#fiddle/1fkj
しかし、あなたはまだしたい場合、あなたはmenucheckitems
にbeforecheckchange
イベントにバインドすることができます
var doCheckChange = function() {
var showncolumns = Ext.Array.sum(grid.headerCt.query("gridcolumn").map(function(column) {return column.isVisible()?1:0;}));
if(showncolumns >= 5) {
Ext.Msg.alert('Error','Too many columns checked');
return false;
}
};
Ext.each(grid.headerCt.getMenu().query("menucheckitem"),function(item) {
item.on('beforecheckchange', doCheckChange);
});
こんにちは、アレクサンダーに感謝します。 1番目のアプローチは完全に機能しますが、2番目を使用する必要があります。 2番目のアプローチでは、最大限に達した後でチェックボックスをオフにすることはできません。 –