我有一个列模板:
columns.Template(@<text></text>).ClientTemplate("<input type='checkBox' class='checkBox'/>").Title("<input type='checkBox'/>").Width(10).Title("Izbor").HtmlAttributes(new { @onclick = "click",style = "align:center;float:none;text-align:center; font-size:12px; vertical-align: middle;" }).HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal; text-align:center; font-size:12px; font-weight: bold;" });
我用这段代码选择行:
function onDataBound(e) { $(".checkBox").bind("change",function(e) { $(e.target).closest("tr").toggleClass("k-state-selected"); }) }
如何从网格中选择某个列(例如ID)并将它们传递给控制器?
解决方法
您可以在事件处理程序中访问网格上的支持数据
dataBound: function(e) { $(".checkBox").bind("change",function(e) { var grid = $("#grid").data("kendoGrid"); var row = $(e.target).closest("tr"); row.toggleClass("k-state-selected"); var data = grid.dataItem(row); alert(data.ProductID); }); }
要获取所选id的列表,您可以在click事件期间跟踪它们,或者只在事件被触发时收集它们,例如.
$("#actionButton").click(function(){ var idsToSend = []; var grid = $("#grid").data("kendoGrid") var ds = grid.dataSource.view(); for (var i = 0; i < ds.length; i++) { var row = grid.table.find("tr[data-uid='" + ds[i].uid + "']"); var checkBox = $(row).find(".checkBox"); if (checkBox.is(":checked")) { idsToSend.push(ds[i].ProductID); } } alert(idsToSend); //this obvIoUsly won't work,but just to illustrate the point. $.post("/whatever",{ids: idsToSend}); });
编辑:demo