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行目。 kendoGriddataではなくkendoGridです。
  2. 2 行目。Var ではなくmodelvarです
  3. 4 行目fieldsfield

編集:"cell"列を編集不可に変更する場合は、次のようにします。

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

モデルはグリッド内のすべての行で共有されるため、1 つの行に変更するだけで済みます。

ここでJSFiddleで実行されていることを確認してくださいhttp://jsfiddle.net/OnaBai/GuyPa/

于 2013-01-18T19:20:11.693 に答える
1

「セル内」編集モードを使用している場合、グリッドには、セルをすぐに閉じるために使用できる「編集」イベントがあります。

$("#grid").kendoGrid({

  ...

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

  ...

});

より強力なアプローチは、kendoGrid をサブクラス化し、editCell および/または editRow メソッドをオーバーライドすることです。その後、やりたいことは何でもできます。 剣道ウィジェットのサブクラス化については、こちらを参照してください。

于 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 に答える