2013-01-18 106 views
2

我正在嘗試使不可編輯的網格取決於條件。在劍道網格中禁用編輯

我jQuery中已經嘗試如下

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

但這裏的「模式」越來越不確定。

也嘗試了$ grid.data(),然後循環遍歷網格,但單元格沒有變得不可編輯,它們仍然是可編輯的。

任何人都可以請讓我知道我該如何做這項工作。

+0

是否試圖啓用/禁用編輯整個表格或某個字段? –

回答

-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; 
} 
+2

你原來的問題是「任何人都可以讓我知道我做錯了什麼。」我告訴過你了。同樣,你也有語法錯誤。你真的試過你的代碼嗎?你可以把它放在JSFiddle並顯示它正在運行?如果您想查看如何將列轉換爲不可編輯,請在上一個答案中查看我的**編輯**。 – OnaBai

11

你有一些印刷錯誤...

試試這個:

var $grid = $("#gridName").data("kendoGrid"); 
var model = $grid.dataSource.at(1); 
if (model) 
    model.fields["cell"].editable = false; 
  1. 1號線在datakendoGrid而不是kendogrid
  2. 2號線在modelVAR而不是瓦爾
  3. 4號線是fields而不是field

編輯:如果你想改變"cell"列不可編輯,簡單地做:

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

你只需要將其更改爲一因爲模型由網格中的所有行共享。

看到它在運行的jsfiddle這裏http://jsfiddle.net/OnaBai/GuyPa/

+0

修改了這些行,仍然存在問題。 – user1870358

+0

@OnaBai嗨,如果我只是想在特定行的特定列上說可編輯值和validation.min,該怎麼辦?比如第一行中某列的最小值是3,第二行是同一列最小值是1或者什麼...... – topwik

+0

@OnaBai似乎如果我做$ grid.dataSource.at(idx).fields.MyField.validation。 min = SomeDynamicMinValue;那麼someDynamicMinValue無論如何都會被設置爲整列,而不僅僅是一行......嗯,不知道這是否可能。 – topwik

0

如果您使用「盒內」編輯模式下,電網有一個「編輯」事件,你可以用它來立即關閉電池。

$("#grid").kendoGrid({ 

    ... 

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

    ... 

}); 

更強大的方法是對kendoGrid進行子類化並覆蓋editCell和/或editRow方法。那麼你可以做任何你想做的事情。 Look here瞭解關於子類化kendo小部件的信息。

0
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/

我希望這個作品well..if工作,那麼請不要忘記投票我..

1

禁用單元格編輯:

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