2013-04-24 111 views
9

我想添加一個複選框列作爲第一列到下面的網格。 有人可以幫我添加嗎?Kendo網格的複選框列

@(Html.Kendo().Grid(Model) 
     .Name("items") 
     .Columns(columns => 
     { 
      columns.Bound(p => p.itemname).Title("Name"); 
      columns.Bound(p => p.cost).Title("Cost"); 
      columns.Bound(p => p.stockinhand).Title("Stock in hand"); 
      columns.Command(command => command.Destroy()).Width(100); 
     }) 
    .Pageable() 
      .DataSource(dataSource => dataSource 
       .Server() 
       .Model(model => model.Id(p=>p.Id)) 
       .Destroy(update => update.Action("EditingInline_Destroy", "Grid")) 
      ) 
) 

回答

17

這是我做的:

columns.Template(@<text></text>).ClientTemplate("<input type='checkbox' #= IsAdmin ? checked='checked':'' # class='chkbx' />") 

,然後於JavaScript:

$(function() { 
    $('#grid').on('click', '.chkbx', function() { 
     var checked = $(this).is(':checked'); 
     var grid = $('#grid').data().kendoGrid; 
     var dataItem = grid.dataItem($(this).closest('tr')); 
     dataItem.set('IsAdmin', checked); 
    }) 
}) 
+2

在InLine Edit模式下使用網格時,如何禁用此複選框直到該行進入編輯模式? – 2013-05-20 16:06:52

+0

如何添加數據標籤?我嘗試了==> columns.Template(@).ClientTemplate(「

和FInd複選框點擊如下:

//Cell click Checkbox select 
$('#Grid').on("click", "td", function (e) { 
    var selectedTd = $(e.target).closest("td"); 
     var grdChkBox = selectedTd.parents('tr').find("td:first").next("td").find('input:checkbox'); 
     grdChkBox.prop('checked', !grdChkBox.prop('checked')); 

}); 

,並做檢查類似下面的所有複選框功能:

function ToggleChkBox(flag) { 
    $('.chkbxq').each(function() { 
     $(this).attr('checked', flag); 
    }); 
} 
3

我通常會添加一些在模型中的布爾列;如下所示。

@(Html.Kendo().Grid(Model) 
    .Name("items") 
    .Columns(columns => 
    { 
     columns.Bound(p => p.status).ClientTemplate("<input type='checkbox' disabled #= status == true ? checked='checked' : '' # />"); 
     columns.Bound(p => p.itemname).Title("Name"); 
     columns.Bound(p => p.cost).Title("Cost"); 
     columns.Bound(p => p.stockinhand).Title("Stock in hand"); 
     columns.Command(command => command.Destroy()).Width(100); 
    }) 
.Pageable() 
     .DataSource(dataSource => dataSource 
      .Server() 
      .Model(model => model.Id(p=>p.Id)) 
      .Destroy(update => update.Action("EditingInline_Destroy", "Grid")) 
     ) 
) 

而直到你按下「編輯」按鈕,只需在ClientTemplate添加「已禁用」來禁用它。這應該做到這一點。謝謝。