Skip to content

Commit

Permalink
扩展通过表达式来禁用button。重构了算法
Browse files Browse the repository at this point in the history
  • Loading branch information
tubo70 committed Nov 12, 2013
1 parent ffee5c4 commit 3def555
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 14 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ ClientBin/
*.[Pp]ublish.xml
*.pfx
*.publishsettings

.idea/
# RIA/Silverlight projects
Generated_Code/

Expand Down
12 changes: 9 additions & 3 deletions Grid.html
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,13 @@
Ext.create('Ext.grid.Panel', {
title: 'Simpsons',
store: Ext.data.StoreManager.lookup('simpsonsStore'),
noSelectionDisable:['Edit','Delete','Print'],
moreSelectionsDisable:['Edit'],
buttonDisable: {
noSelection: ['Edit', 'Delete', 'Print'],
moreSelections: ['Edit'],
expressions: {
Edit: '$phone == "555-222-1254"'
}
},
selModel: Ext.create('Ext.selection.CheckboxModel', { allowDeselect: true }),
tbar: {
xtype: 'toolbar',
Expand Down Expand Up @@ -59,7 +64,8 @@
{
xtype: 'button',
itemId: 'Edit',
text: 'Edit'}]
text: 'Edit'}
]
}
],
columns: [
Expand Down
48 changes: 38 additions & 10 deletions ux/grid/gridOverride.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,10 @@ Ext.define('Ext.ux.grid.PanelOverride', {
}
var me = this;
var items = me.allItems;
var disableNames = me.noSelectionDisable;
if (records.length == 1) {
disableNames = me.oneSelectionDisable;
}
if (records.length > 1) {
disableNames = me.moreSelectionsDisable;
}
for (var name in items) {
var item = items[name];
if (Ext.isArray(item)) {
Ext.Array.each(item, function (oneItem) {
Ext.each(item, function (oneItem) {
if (oneItem.enable) {
oneItem.enable();
}
Expand All @@ -33,9 +26,43 @@ Ext.define('Ext.ux.grid.PanelOverride', {
else if (item.enable) {
item.enable();
}
if (disableNames && Ext.Array.contains(disableNames, name)) {
}
var disables = {};
if (me.buttonDisable) {
if (me.buttonDisable.expressions) {
var exps = me.buttonDisable.expressions;
for (var btn in exps) {
var exp = exps[btn];
for(var i = 0, il = records.length;i<il;i++) {
var data = records[i].data;
exp = exp.replace(/\$/g, 'data.');
var disabled = eval(exp);
if (disabled === true) {
disables[btn] = true;
break;
}
}
}
}
var disableNames = me.buttonDisable.noSelection;
if (records.length == 1) {
disableNames = me.buttonDisable.oneSelection;
}
if (records.length > 1) {
disableNames = me.buttonDisable.moreSelections;
}
for (var name in items) {
if (disables[name]) {
continue;
}
if (disableNames && Ext.Array.contains(disableNames, name)) {
disables[name] = true;
}
}
for (var name in disables) {
var item = items[name];
if (Ext.isArray(item)) {
Ext.Array.each(item, function (oneItem) {
Ext.each(item, function (oneItem) {
if (oneItem.disable) {
oneItem.disable();
}
Expand All @@ -44,6 +71,7 @@ Ext.define('Ext.ux.grid.PanelOverride', {
else if (item.disable) {
item.disable();
}

}
}
}
Expand Down

0 comments on commit 3def555

Please sign in to comment.