禁用在kendo网格中编辑

问题描述 投票:3回答:5

我正在尝试根据条件使可编辑网格无法使用。

我在jquery中试过如下

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

但是这里的'模型'正在变得不确定。

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

任何人都可以让我知道我怎样才能做到这一点。

jquery asp.net-mvc razor kendo-ui
5个回答
14
投票

你有一些印刷错误......

试试这个:

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/


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();

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/

我希望这很好用..如果作品然后不要忘记投票给我..


0
投票

如果您正在使用“incell”编辑模式,则网格会有一个“编辑”事件,可用于立即关闭单元格。

$("#grid").kendoGrid({

  ...

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

  ...

});

更强大的方法是将kendoGrid子类化并覆盖editCell和/或editRow方法。然后你可以做任何你想做的事。 Look here有关子类化kendo小部件的信息。


-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;
}
© www.soinside.com 2019 - 2024. All rights reserved.