|
|
@@ -49,6 +49,9 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
emptyText: '<div style="width: 100%; text-align: center; cursor: pointer; color: green;" class="fa fa-plus" title="新增行" onclick="addRows(\'' + me.id + '\')"></div>',
|
|
|
},
|
|
|
listeners: {
|
|
|
+ edit: function() {
|
|
|
+ me.fireEvent('validChange');
|
|
|
+ },
|
|
|
itemmouseenter: function(view, record, item, index, e, eOpts) {
|
|
|
if(!view.up('detailGridField').editable) {
|
|
|
return;
|
|
|
@@ -100,6 +103,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
xtype : "numbercolumn",
|
|
|
align : 'center',
|
|
|
format:'0',
|
|
|
+ allowBlank: true,
|
|
|
summaryType: 'count',
|
|
|
locked:true,
|
|
|
lockable: false,
|
|
|
@@ -115,11 +119,6 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
},
|
|
|
};
|
|
|
|
|
|
- Ext.Array.each(columns, function(c) {
|
|
|
- Ext.applyIf(c, {
|
|
|
- allowBlank: true
|
|
|
- });
|
|
|
- });
|
|
|
if (detnoField) {
|
|
|
Ext.apply(me, { columns: [indexColumn].concat(columns) });
|
|
|
}
|
|
|
@@ -193,6 +192,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
var data = {};
|
|
|
data[detnoColumn] = detno + 1;
|
|
|
store.insert(store.indexOf(selectedRecord) + 1, data);
|
|
|
+ me.fireEvent('validChange');
|
|
|
},
|
|
|
|
|
|
deleteDetail: function(v) {
|
|
|
@@ -229,6 +229,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
}else{
|
|
|
store.remove(selectedRecord);
|
|
|
}
|
|
|
+ me.fireEvent('validChange');
|
|
|
},
|
|
|
|
|
|
swapUp: function() {
|
|
|
@@ -280,6 +281,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
//聚焦目标行
|
|
|
me.selModel.select(to);
|
|
|
}
|
|
|
+ me.fireEvent('validChange');
|
|
|
},
|
|
|
setGridDisabled: function(able) {
|
|
|
var me = this,
|
|
|
@@ -294,19 +296,50 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断grid数据是否合法
|
|
|
+ */
|
|
|
isValid: function() {
|
|
|
var me = this,
|
|
|
- columns = me.columns;
|
|
|
+ columns = me.columns,
|
|
|
+ dirtyData = me.getDirtyData(),
|
|
|
+ valid = true;
|
|
|
|
|
|
// 判断列必填
|
|
|
- Ext.Array.each(columns, function(c) {
|
|
|
+ a:
|
|
|
+ for(var i = 0; i < columns.length; i++) {
|
|
|
+ var c = columns[i];
|
|
|
+ var cname = c.dataIndex;
|
|
|
var allowBlank = c.allowBlank;
|
|
|
- if(!allowBlank) {
|
|
|
-
|
|
|
+ var isValid = c.isValid;
|
|
|
+
|
|
|
+ b:
|
|
|
+ for(var j = 0; j < dirtyData.length; j++) {
|
|
|
+ var d = dirtyData[j];
|
|
|
+ var value = d[cname];
|
|
|
+
|
|
|
+ if(typeof isValid == 'function') {
|
|
|
+ if(!isValid(value)) {
|
|
|
+ valid = false;
|
|
|
+ break a;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(!allowBlank) {
|
|
|
+ if(!value) {
|
|
|
+ valid = false;
|
|
|
+ break a;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- });
|
|
|
+ }
|
|
|
+
|
|
|
+ return valid;
|
|
|
},
|
|
|
|
|
|
+ /**
|
|
|
+ * 获得已修改的数据
|
|
|
+ */
|
|
|
getDirtyData: function() {
|
|
|
var me = this,
|
|
|
store = me.getStore(),
|