2014-05-23 76 views
0

我有一個kendogrid所有的工作很好,現在我得到了新的要求,即最後一欄,我有複選框,只是以前的專欄中,我有一個狀態欄,禁用/啓用劍道網格複選框基於列的值

如果該文本值是「CERTIFIED」,那麼應該啓用該特定行復選框,如果文本不是「CERTIFIED」,則應該禁用該行的複選框,並且不應該允許使用jquery檢查該複選框,我已附加了pic kendogrid的我有,這可能會幫助您的任何建議

CODE

這是我的列MY KENDO GRID

, columns: [ 
      { field: "ResultFormatID", Title: "ResultFormatID", filterable: false, sortable: false, hidden: true }, 
      { field: "ID", Title: "ID", filterable: false, sortable: false, hidden: true }, 
      { field: "RowID", Title: "RowID", filterable: false, sortable: false, hidden: true }, 
      { field: "BillNumber", Title: "Bill Number", filterable: false, sortable: false, hidden: true }, 
      { field: "ServiceName", Title: "Service Name", width: 600 }, 
      { field: "Status", Title: "Service Status", width: 150 } 
      , { 
       template: $("#template").html(), 
       headerTemplate: '<label> <input type="checkbox" id="checkAll"/>Download</label>', filterable: false, sortable: false, width: 100, 
      } 
     ] 

THIS IS MY單獨的行CHECKBOX

<script id="template" type="text/kendo-template"> 
    #if(ResultFormatID != 3) { # 
    <input type="checkbox" #= data.Action ? checked="checked" : "" # class=\"check_row\"/> 
    # } else { # 
<input type="button" class="k-button info" name="info" value="Preview" /> 
    # } # 

修訂

THIS IS MY CHECKALL功能(和我因取消)

$("#checkAll").on('click', function (e) { 
     debugger; 

     var $cb = $(this); 
     var checked = $cb.is(':checked'); 
     var grid = $('.Grid_table').data('kendoGrid'); 

     grid.table.find("tr").find("td:last input").attr("checked", checked);   


     var items = $(".Grid_table").data("kendoGrid").dataSource.data(); 
     for (i = 0; i < items.length; i++) { 
      var item = items[i]; 
     var status = item.ServiceStatus; 

      if (status == "Result Certified ") { 
       grid.table.find("tr").find("td:last input").attr("checked", checked); 
      } 
      else { 

       grid.table.find("tr").find("td:last input").prop("checked",false); 
      } 
    if (!checked) { 
      // debugger; 
      $(".Grid_table").data("kendoGrid").clearSelection(); 
     } 

    }); 

}); 

更新2

現在按照你的代碼,一切工作正常,我能取消的不認證的行,我是面對下面的代碼的問題,如果至少單個複選框沒有檢查,它禁用用於下載PDF文件的按鈕,現在如果我選擇所有複選框並單擊該按鈕下載,它現在被禁用!但如果我取消選中10行中的任何一行,則下載啓用並用於下載文件。

如果我禁用了最後3行的下面的代碼,它有助於啓用按鈕點擊,但我需要取消選擇atleast單個複選框工作,如果不是它將禁用,我做錯了什麼?

$(function() { 
     //debugger;    
     var checkboxes = $(':checkbox:not(#checkAll)').click(function (event) { 
      $('#btn_Print').prop("disabled", checkboxes.filter(':checked').length == 0); 
     }); 
     $('#checkAll').click(function (event) { 
      checkboxes.prop('checked', this.checked); 
      $('#btn_Print').prop("disabled", !this.checked) 
     }); 
    }); 

IF

enter image description here

enter image description here

回答

2

看來,你需要的是控制如果type="checkbox"inputdisabled。所以,你應該定義模板如下:

<script id="template" type="text/kendo-template"> 
    #if(ResultFormatID != 3) { # 
    <input type="checkbox" #= data.Action ? checked="checked" : "" # class=\"check_row\" #= data.Status == 'Certified' ? disabled='disabled' : "" #/> 
    # } else { # 
<input type="button" class="k-button info" name="info" value="Preview" /> 
    # } # 
</script> 

即:加data.Status == 'Certified' ? disabled='disabled' : ""

的情況看到它在這裏的行動:http://jsfiddle.net/Hfk3Q/

編輯:在標題點擊時,需要更改複選框將會改變它的實現,只檢查那些沒有被禁用的單元。喜歡的東西:

$('.check_row:not(:disabled)', grid.tbody).prop('checked', true); 

看到它在這裏的行動:http://jsfiddle.net/Hfk3Q/3/

+0

謝謝回覆@OnaBai,這件事我就相對於固定的條件是,有一個小問題,我之所以需要一個複選框被禁用,因爲該行不應該由用戶檢查,但如果我選擇標題模板「全選」它選擇包括禁用的一切,我不需要,我只需要那些狀態被啓用的行,如果可能,請將其驗證 – Manjuboyz

+0

我建議您更改'selectAll'代碼,以便不選擇那些被禁用的代碼,這在jQuery中很容易控制。 – OnaBai

+0

檢查我的**編輯**與檢查所有未禁用功能的建議實施。 – OnaBai