我正在尝试根据条件使可编辑网格无法使用。
我在jquery中尝试了如下
var $grid = &("#gridName").data("kendogrid");
Var model = $grid.datasource.at(1);
if(model)
model.field["cell"].editable = false;
但是这里'模型'未定义。
还尝试了$ grid.data()然后循环遍历网格,但是单元格无法编辑,它们仍然可以编辑。
任何人都可以告诉我如何才能完成这项工作。
答案 0 :(得分:14)
你有一些印刷错误......
请改为尝试:
var $grid = $("#gridName").data("kendoGrid");
var model = $grid.dataSource.at(1);
if (model)
model.fields["cell"].editable = false;
data
中,它是 kendoGrid ,而不是 kendogrid 。model
中, var 而不是 Var fields
而不是field
编辑:如果您想将"cell"
列更改为不可编辑,只需执行以下操作:
var $grid = $("#gridName").data("kendoGrid");
$grid.dataSource.at(0).fields["cell"].editable = false;
您只需将其更改为一行,因为模型由网格中的所有行共享。
在这里看到它在JSFiddle中运行http://jsfiddle.net/OnaBai/GuyPa/
答案 1 :(得分:1)
for(i=0;i<=$("#grid").find("tbody tr").length ; i++)
{
var model = $("#grid").data("kendoGrid").dataSource.at(i);
if(model)
{
model.fields[$("#grid").data("kendoGrid").columns[i].field].editable = false;
}
}
&#13;
http://jsfiddle.net/parthiv89/qwtyLmhk/
我希望这种方法很有效......如果有作品,请不要忘记投票给我。
答案 2 :(得分:0)
如果您正在使用“incell”编辑模式,则网格会有一个“编辑”事件,可用于立即关闭单元格。
$("#grid").kendoGrid({
...
edit: function(e) {
if ( ... ) {
this.closeCell();
}
}
...
});
更强大的方法是将kendoGrid子类化并覆盖editCell和/或editRow方法。然后你可以做任何你想做的事。 Look here有关子类化kendo小部件的信息。
答案 3 :(得分:-7)
问题已解决。
var $grid = &("#gridName").data("kendoGrid");
var len= &("#gridName").data("kendoGrid tbody tr").length();
for(i=0;i<=len ; i++)
{
var model = $grid.datasource.at(i);
if(model)
model.fields["cell"].editable = false;
}