2012-12-10 42 views
2

我在MVC和C#中使用Telerik Kendo網格。 我有一個網格,填充了一些數據,並添加了一個複選框列 - 使用,以便用戶可以選擇所有。劍道網格:如何檢查所選行的所有複選框?

現在,當我檢查「selectAll」複選框時,將檢查所有複選框(每行一個),因爲它們應該是。

我想做什麼:我希望能夠雙擊一行,並讓chechbox檢查更改 - 如果未選中,dbl-click會檢查它,反之亦然。另外,由於Kendo網格允許用戶選擇很多(mousedown,drag和mouseup - 就像在桌面上選擇圖標時一樣),我想要這樣做,以便當用戶執行此操作時,所有選定行的複選框會被選中,如果它們已經被選中,那麼這個操作會導致複選框不被選中。

詳情:

  • 網名:網格
  • JQuery的版本:1.8.3
  • MVC 4
  • 最新KendoUI

代碼檢查所有的複選框,當「全選「複選框被選中:

$(document).ready(function() { 
var grid = $('#Grid').data('kendoGrid'); 
    grid.thead.find("th:last") 
    .append($('<input class="selectAll" type="checkbox"/>')) 
    .delegate(".selectAll", "click", function() { 
     var checkbox = $(this); 
     grid.table.find("tr") 
      .find("td:last input") 
      .attr("checked", checkbox.is(":checked")) 
      .trigger("change"); 
    }); 
}); 

我是一個總的初學者與Javascript,所以任何幫助將不勝感激。

回答

6

你的例子似乎工作:http://jsfiddle.net/scaillerie/axpmF/

你必須通過你的document.ready事件的開頭添加設置網格爲kendoGrid:

$('#Grid').kendoGrid(); 

,並確保有您的表中的所有細胞最後一個複選框...


編輯:

對於在選定的行更新的複選框的狀態,喲u必須對電網的每個單元註冊事件dblclick

grid.tbody.on("dblclick", "tr", selectAllSelectedRows); 

function selectAllSelectedRows() { 
    grid.tbody.find("tr").each(function() { 
     var $this = $(this), 
      ckbox, 
      state; 

     if($this.hasClass("k-state-selected")) { 
      ckbox = $this.find("td:last input"); 
      state = ckbox.prop("checked"); 
      ckbox.prop("checked", !state); 
     } 
    }) 
} 

我已經更新了我的小提琴與新代碼:http://jsfiddle.net/scaillerie/axpmF/2/

+0

我不認爲你理解我的問題。我有選擇所有工作(如我的文章中所述)。 – pookie

+0

你是對的:我還沒有看到你真正的問題在哪裏......我已經編輯了我的文章並回答了你的問題。 –

+0

優秀!謝謝,它完美的作品。我會upvote,但我沒有代表:) – pookie