ExtJs:如何验证可编辑的网格并防止空单元格
ExtJs: How to validate editible Grid and prevent empty cells
我需要使用 this link 验证网格。但是我不能使用 getByCellPosition 函数并且它 returns false 因为它的输入参数 {row: idx, column: i} .
如何从网格中获取单元格并调用此函数?
store = grid.getStore();
view = grid.getView();
error = false;
columnLength = grid.columns.length;
store.each(function(record,idx){
for (var i = 0; i < columnLength; i++) {
cell = view.getCellByPosition({row: idx, column: i});
cell.removeCls("x-form-invalid-field");
cell.set({'data-errorqtip': ''});
fieldName = grid.columns[i].dataIndex;
if (fieldName === 'WHATEVER') {
//Do your validation here
if(failed) {
cell.addCls("x-form-invalid-field");
cell.set({'data-errorqtip': 'Your error message qtip'});
error = true;
}
}
}
});
我认为使用 'renderer' 是简单有效的方法。如果它适合你的代码,你可以试试这个:https://fiddle.sencha.com/#fiddle/tl3
var validRenderer = function (val, meta, rec, rowIndex, colIndex, store) {
if (val == isNotValid) {
meta.tdAttr = 'data-qtip=" '+val+' is not right person"';
meta.style = "background-color:red;";
}
return val;
}
var grid = Ext.create('Ext.grid.Panel', {
store: store1,
columns: [
{
text: 'Name',
dataIndex: 'name',
renderer: validRenderer
}
],
renderTo: Ext.getBody()
});
我需要使用 this link 验证网格。但是我不能使用 getByCellPosition 函数并且它 returns false 因为它的输入参数 {row: idx, column: i} .
如何从网格中获取单元格并调用此函数?
store = grid.getStore();
view = grid.getView();
error = false;
columnLength = grid.columns.length;
store.each(function(record,idx){
for (var i = 0; i < columnLength; i++) {
cell = view.getCellByPosition({row: idx, column: i});
cell.removeCls("x-form-invalid-field");
cell.set({'data-errorqtip': ''});
fieldName = grid.columns[i].dataIndex;
if (fieldName === 'WHATEVER') {
//Do your validation here
if(failed) {
cell.addCls("x-form-invalid-field");
cell.set({'data-errorqtip': 'Your error message qtip'});
error = true;
}
}
}
});
我认为使用 'renderer' 是简单有效的方法。如果它适合你的代码,你可以试试这个:https://fiddle.sencha.com/#fiddle/tl3
var validRenderer = function (val, meta, rec, rowIndex, colIndex, store) {
if (val == isNotValid) {
meta.tdAttr = 'data-qtip=" '+val+' is not right person"';
meta.style = "background-color:red;";
}
return val;
}
var grid = Ext.create('Ext.grid.Panel', {
store: store1,
columns: [
{
text: 'Name',
dataIndex: 'name',
renderer: validRenderer
}
],
renderTo: Ext.getBody()
});