Mar 29, 2016, 2:27 PM
Checkbox problem with onHeaderClick
I have the problem with all selection by header for checkbox because ext.net call the same method all times how many checkbox are object of the selection.
Is it possible manage all selection with only one server call?
Is it possible manage all selection with only one server call?
Ext.selection.CheckboxModel.override({
//selectAll: function (suppressEvent) {
// var me = this,
// selections = me.store.getAllRange(), // instead of the getRange call
// i = 0,
// len = selections.length,
// start = me.getSelection().length;
// for (; i < len; i++) {
// me.doSelect(selections[i], true, suppressEvent);
// }
// me.resumeChanges();
// if (!suppressEvent) {
// me.maybeFireSelectionChange(me.getSelection().length !== start);
// }
//},
deselectAll: Ext.Function.createSequence(Ext.selection.CheckboxModel.prototype.deselectAll, function () {
this.view.panel.getSelectionMemory().clearMemory();
}),
onHeaderClick: function (headerCt, header, e) {
alert(header.isCheckerHd);
if (header.isCheckerHd) {
e.stopEvent();
console.log("isCheckerHd");
var me = this,
isChecked = header.el.hasCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');
// Prevent focus changes on the view, since we're selecting/deselecting all records
me.preventFocus = true;
if (isChecked) {
alert(isChecked);
me.deselectAll();
me.toggleUiHeader(false); // added
} else {
me.selectAll();
me.toggleUiHeader(true); // added
alert(isChecked);
}
delete me.preventFocus;
}
},
updateHeaderState: function () {
var me = this,
store = me.store,
storeCount = store.getTotalCount(),
views = me.views,
hdSelectStatus = false,
selectedCount = 0,
selected, len, i;
if (!store.buffered && storeCount > 0) {
selected = me.view.panel.getSelectionMemory().selectedIds;
hdSelectStatus = true;
for (s in selected) {
++selectedCount;
}
hdSelectStatus = storeCount === selectedCount;
}
if (views && views.length) {
me.toggleUiHeader(hdSelectStatus);
}
}
});
<DirectEvents>
<Deselect OnEvent="gridSuppFilter_Select">
<ExtraParams>
<ext:Parameter Name="gridSupp" Value="Ext.encode(#{gridSuppliers}.getRowsValues({selectedOnly : true}))"
Mode="Raw" />
</ExtraParams>
</Deselect>
<Select OnEvent="gridSuppFilter_Select">
<ExtraParams>
<ext:Parameter Name="gridSup" Value="Ext.encode(#{gridSupp}.getRowsValues({selectedOnly : true}))"
Mode="Raw" />
</ExtraParams>
</Select>
</DirectEvents>