RadGrid批量编辑模式下空白值验证的原数值获取方法咨询
RadGrid批量编辑模式下实现空白字段验证的例外规则
要实现“原有空白记录编辑后仍保持空白时允许通过验证,非空白记录编辑为空白时阻止”的逻辑,你可以通过RadGrid的客户端BatchEditManager获取单元格的原始值,具体实现如下:
自定义验证函数修改
替换你原有的验证函数为以下代码:
function BlankFieldValidator(sender, args) { // 获取RadGrid客户端实例(替换为你的RadGrid控件ID) var radGrid = $find("<%= RadGrid1.ClientID %>"); var batchEditManager = radGrid.get_batchEditingManager(); // 获取当前验证的单元格 var currentCell = args.get_cell(); // 获取当前行索引和列的UniqueName var rowIndex = batchEditManager.get_rowIndex(currentCell); var columnUniqueName = currentCell.getAttribute("data-uniqueName"); // 获取该单元格的原始数据库值 var originalValue = batchEditManager.getCellValue(rowIndex, columnUniqueName); // 验证逻辑:编辑后为空时,仅当原始值也为空才通过验证 if (args.Value.trim().length === 0) { args.IsValid = (originalValue.trim().length === 0); } else { args.IsValid = true; } }
关键说明
get_batchEditingManager():RadGrid批量编辑模式的核心客户端管理对象,负责维护所有单元格的原始值和修改后的值get_rowIndex(currentCell):通过当前单元格定位到所在行的索引data-uniqueName:RadGrid自动为每个单元格渲染的属性,对应列的UniqueName属性(需确保你的列已设置该属性)getCellValue(rowIndex, columnUniqueName):直接获取指定单元格未修改前的原始值,这就是你需要的“数据库原有值”
注意事项
- 确保RadGrid的客户端ID能正确获取,若使用
ClientIDMode="Static",直接写控件的静态ID即可 - 列必须配置
UniqueName属性,否则data-uniqueName无法获取,导致原始值获取失败 - 代码中使用
trim()处理值,避免空格被误判为非空内容
内容的提问来源于stack exchange,提问作者Michael Foster
相关产品推荐
相关产品推荐

