Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 禁用剑道网格中的编辑_Jquery_Asp.net Mvc_Razor_Kendo Ui - Fatal编程技术网

Jquery 禁用剑道网格中的编辑

Jquery 禁用剑道网格中的编辑,jquery,asp.net-mvc,razor,kendo-ui,Jquery,Asp.net Mvc,Razor,Kendo Ui,我正在尝试根据条件将可编辑网格设置为不可编辑 我已经在jquery中进行了如下尝试 var $grid = &("#gridName").data("kendogrid"); Var model = $grid.datasource.at(1); if(model) model.field["cell"].editable = false; 但这里的“模型”正在变得不明确 还尝试了$grid.data(),然后在网格中循环,但是单元格不是不可编辑的,它们仍然是可编辑的 有人能告诉我

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

我已经在jquery中进行了如下尝试

var $grid = &("#gridName").data("kendogrid");
Var model = $grid.datasource.at(1);
if(model)
  model.field["cell"].editable = false;
但这里的“模型”正在变得不明确

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


有人能告诉我怎么做吗。

你有一些印刷错误

请尝试以下方法:

var $grid = $("#gridName").data("kendoGrid");
var model = $grid.dataSource.at(1);
if (model)
    model.fields["cell"].editable = false;
  • 第1行。在
    数据中
    是kendoGrid而不是kendoGrid
  • 第2行。在
    模型中
    是var而不是var
  • 第4行。它是
    字段
    而不是
    字段
  • 编辑:如果要将“单元格”列更改为不可编辑,只需执行以下操作:

    var $grid = $("#gridName").data("kendoGrid");
    $grid.dataSource.at(0).fields["cell"].editable = false;
    
    您只需要将其更改为一行,因为模型由网格中的所有行共享

    请参见在JSFIDLE中运行它,问题已得到解决

    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;
    }
    
    var$grid=&(#gridName”).data(“kendoGrid”);
    var len=&(“#gridName”).data(“kendoGrid tbody tr”).length();
    对于(i=0;i如果使用“incell”编辑模式,网格有一个“edit”事件,可用于立即关闭单元格

    $("#grid").kendoGrid({
    
      ...
    
      edit: function(e) {
          if ( ... ) {
              this.closeCell();
          }
      }
    
      ...
    
    });
    
    一种更强大的方法是对kendoGrid进行子类化,并覆盖editCell和/或editRow方法。然后您可以做任何您想做的事情。有关对kendo小部件进行子类化的信息。


    用于(i=0;i禁用单元格编辑:

     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;
            }
    
        }
    
    要删除命令按钮(如删除按钮),请执行以下操作:

     var rows = $('#gridName tbody tr');
        $.map(rows, function (row) {
            //cell buttons index
            row.cells[4].innerHTML = "";
    
        });
    
    要隐藏工具栏网格,请执行以下操作:

    $("#gridName .k-grid-toolbar").hide();
    

    正在尝试仅启用/禁用编辑整个表格或某些字段?修改了行,仍然存在问题。@OnaBai嘿,如果我只想更改特定行中特定列的可编辑值和validation.min,该怎么办?假设第1行中某些列的最小值为3,第2行中相同列的最小值为1或其他…@on如果我使用$grid.dataSource.at(idx),aBai似乎会.fields.MyField.validation.min=somedynamicinvalue;那么不管怎样,都会为整个列设置somedynamicinvalue,而不仅仅是一行…hmmmmm不确定这是否可行。对,字段指的是
    模型,即列的定义。因此,我们不能使特定行的单元格不可编辑,或者有什么方法可以做到这一点你最初的问题是“谁能告诉我我做错了什么?”我告诉过你。同样,你也有语法错误。你真的试过你的代码吗?你能把它放到JSFIDLE上并让它运行吗?如果你想知道如何将一个列转换为不可编辑,请在前面的答案中检查我的编辑。这是可行的,但是如果你有一个编辑器,比如下拉菜单,你可能会在打开它然后关闭它时注意到一个flash。相反,您可以使用
    beforeEdit
    事件和
    e.preventDefault()
    ,这样单元格就不会首先打开。
    $("#gridName .k-grid-toolbar").hide();