4

我正在尝试根据条件将可编辑网格设置为不可编辑。

我在jquery中试过如下

var $grid = &("#gridName").data("kendogrid");
Var model = $grid.datasource.at(1);
if(model)
  model.field["cell"].editable = false;

但是这里的“模型”变得不确定。

还尝试了 $grid.data() 然后循环遍历网格,但是单元格并没有变得不可编辑,它们仍然是可编辑的。

任何人都可以让我知道如何使这项工作。

4

5 回答 5

15

你有一些排版错误...

试试这个:

var $grid = $("#gridName").data("kendoGrid");
var model = $grid.dataSource.at(1);
if (model)
    model.fields["cell"].editable = false;
  1. 第 1 行。data其中是kendoGrid而不是kendogrid
  2. 第 2 行。model其中是var而不是Var
  3. 第 4 行。它是fields和不是field

编辑:如果要将"cell"列更改为不可编辑,只需执行以下操作:

var $grid = $("#gridName").data("kendoGrid");
$grid.dataSource.at(0).fields["cell"].editable = false;

您只需将其更改为一行,因为该模型由网格中的所有行共享。

在这里查看它在 JSFiddle 中运行http://jsfiddle.net/OnaBai/GuyPa/

于 2013-01-18T19:20:11.693 回答
2

禁用单元格编辑:

 var len = $("#gridName").find("tbody tr").length;
    for(var i=0;i<=len ; i++)
    {
        var model = $("#gridName").data("kendoGrid").dataSource.at(i);
        if (model) {//field names
            model.fields["DueDateStr"].editable = false;
            model.fields["TotalAmount"].editable = false;
            model.fields["IsPercentage"].editable = false;
        }

    }

禁用它在模板中的复选框控件:

$.map($("#gridName").find("input:checkbox"),
        function (item) {
            $(item).attr('disabled', 'disabled');
        }
    );

删除命令按钮,如删除按钮:

 var rows = $('#gridName tbody tr');
    $.map(rows, function (row) {
        //cell buttons index
        row.cells[4].innerHTML = "";

    });

隐藏工具栏网格:

$("#gridName .k-grid-toolbar").hide();
于 2015-11-23T16:33:42.087 回答
1

如果您使用“incell”编辑模式,则网格有一个“edit”事件,您可以使用它来立即关闭单元格。

$("#grid").kendoGrid({

  ...

  edit: function(e) {
      if ( ... ) {
          this.closeCell();
      }
  }

  ...

});

更强大的方法是继承 kendoGrid 并覆盖 editCell 和/或 editRow 方法。然后你可以做任何你想做的事。 在此处查找有关子类化 kendo 小部件的信息。

于 2014-06-27T08:55:01.393 回答
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;    
  }
}

http://jsfiddle.net/parthiv89/qwtyLmhk/

我希望这行得通..如果行得通,那么别忘了给我投票..

于 2015-03-19T11:44:16.580 回答
-8

问题已解决。

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;
}
于 2013-01-19T07:05:32.410 回答