
在 kendo ui grid 中,通过 uid 获取 dataitem 时若始终返回 null,根本原因往往不是 uid 本身错误,而是调用 `grid.dataitem()` 所依赖的 dom 元素不符合 grid 内部校验要求:该方法仅接受由 grid 渲染并维护的原生 `
更可靠、推荐的做法是跳过 DOM 层级,直接操作数据源:
// ✅ 正确方式:通过 dataSource.getByUid() 获取 dataItem
var grid = $("#yourGridID").data("kendoGrid");
if (grid && grid.dataSource) {
var uidValue = "b318f970-79ec-472e-818f-f0d5adb6b5f3";
var dataItem = grid.dataSource.getByUid(uidValue);
if (dataItem) {
console.log("成功获取 dataItem:", dataItem);
// 可安全访问字段,如 dataItem.name、dataItem.id 等
} else {
console.warn("未找到 UID 对应的数据项,请确认 UID 是否存在于当前 dataSource 中");
}
}⚠️ 注意事项:
- getByUid() 是 kendo.data.DataSource 的原生方法,不依赖 UI 渲染状态,因此在 AJAX 回调、延迟操作或 Grid 尚未完全初始化完成时依然可用;
- 确保 uidValue 与数据项实际 uid 完全一致(区分大小写,无空格);可通过 console.log(grid.dataSource.data()) 检查当前数据集中的 uid 字段值;
- 若使用服务器分页/筛选,需确保目标数据项已被加载到客户端 dataSource.data() 中;否则 getByUid() 将返回 undefined;
- 避免在 Grid 初始化前调用(即确保 $("#yourGridID").data("kendoGrid") 不为 undefined),建议将逻辑置于 dataBound 事件回调或 setTimeout(..., 0) 延迟执行以保障初始化完成。
✅ 总结:当 grid.dataItem(tr) 返回 null 时,优先转向 dataSource.getByUid(uid) ——它更稳定、语义更清晰,且与 Kendo 数据生命周期深度对齐,是处理 UID 查找场景的标准实践。










