我有一个剑道网格,我不想在页面加载时填充它,所以我将autoBind设置为false。但是我也想使某些列在某些情况下不可编辑。我正在关注this answer的操作方法,简而言之是通过以下方式实现的:
var $grid = $("#gridName").data("kendoGrid");
$grid.dataSource.at(0).fields["cell"].editable = false;
但是,如果$grid.dataSource.at(0)
为假,则autoBind
是不确定的,我希望在dataSource.read()
之前而不是之后。因此,我有了这个,但是$grid.dataSource.at(0)
仍未定义,并且网格中有几行结果。
var $grid = $("#gridName").data("kendoGrid");
$gridMaterials.dataSource.read();
$grid.dataSource.at(0).fields["cell"].editable = false;
如果我将autoBind
更改为true,则一切正常。
在不自动绑定时如何实现将列设置为不可编辑?
答案 0 :(得分:1)
读取操作正在异步运行,但是您的代码按顺序工作。因此,发生的是读操作在尝试访问(尚未加载的数据)之后立即开始(!)。您可以告诉数据源,一旦加载完成该怎么办。有关使用read's promise功能的示例,请参见https://docs.telerik.com/kendo-ui/api/javascript/data/datasource/methods/read。