function datagridValidCheck(datagridId){ var endList = $('#entryDetail_datagrid').datagrid('getRows'); for (var end in endList) { var end_index = $('#entryDetail_datagrid').datagrid('getRowIndex', endList[end]); $('#entryDetail_datagrid').datagrid('endEdit', end_index); } debugger; let rows = $('#'+datagridId).datagrid('getRows'); let editors = $('#'+datagridId).datagrid('getEditors'); for(let index=0;index<rows.length;index++){ let row =rows[index]; var isValid = true; var columns = $('#'+datagridId).datagrid('getColumnFields'); for (var i = 0; i < columns.length; i++) { var field = columns[i]; var col = $('#'+datagridId).datagrid('getColumnOption', field); if (col.editor && col.editor.options && col.editor.options.required) { let value; if(editors.length>0){ let editorTaget = $('#'+datagridId).datagrid('getEditor',{index:index,field:field}).target; value = editorTaget.textbox('getValue'); }else{ value = row[field]; } if (!value || value.trim() === '') { isValid = false; // 弹出提示信息 $.messager.alert('提示', col.editor.options.messages, 'warning'); break; } } } return isValid; } var editors = $('#datagrid').datagrid('getEditors');的length为0
时间: 2023-09-16 17:11:11 浏览: 131
根据你提供的代码,我看到你在 `datagridValidCheck` 函数中获取了 `editors` 的长度,但发现其值为 0。这可能是因为在调用 `getEditors` 方法之前,你需要先调用 `endEdit` 方法来结束编辑状态。
在你的代码中,你已经在 `for` 循环中调用了 `endEdit` 方法,但是在获取 `editors` 的代码之前没有等待编辑状态的结束。因此,`getEditors` 得到的结果是空的。
你可以尝试在调用 `getEditors` 方法之前,先调用 `datagrid('endEdit', end_index)` 来确保编辑状态已经结束。这样就能正确获取到编辑器的实例。
以下是修改后的代码示例:
```javascript
function datagridValidCheck(datagridId) {
var endList = $('#' + datagridId).datagrid('getRows');
for (var end in endList) {
var end_index = $('#' + datagridId).datagrid('getRowIndex', endList[end]);
$('#' + datagridId).datagrid('endEdit', end_index);
}
debugger;
let rows = $('#' + datagridId).datagrid('getRows');
let editors = $('#' + datagridId).datagrid('getEditors');
for (let index = 0; index < rows.length; index++) {
let row = rows[index];
var isValid = true;
var columns = $('#' + datagridId).datagrid('getColumnFields');
for (var i = 0; i < columns.length; i++) {
var field = columns[i];
var col = $('#' + datagridId).datagrid('getColumnOption', field);
if (col.editor && col.editor.options && col.editor.options.required) {
let value;
if (editors.length > 0) {
let editorTarget = $('#' + datagridId).datagrid('getEditor', {index: index, field: field}).target;
value = editorTarget.textbox('getValue');
} else {
value = row[field];
}
if (!value || value.trim() === '') {
isValid = false;
// 弹出提示信息
$.messager.alert('提示', col.editor.options.messages.required, 'warning');
break;
}
}
}
return isValid;
}
}
```
在这个修改后的代码中,我将 `getEditors` 方法的调用放在了 `endEdit` 方法之后。这样就能确保编辑状态已经结束,从而正确获取到编辑器的实例。
希望这次能够解决你的问题。如有其他疑问,请继续提问。
阅读全文