Checkbox 复选框列,获取所选值并传递给控制器

Checkbox 复选框列,获取所选值并传递给控制器,checkbox,kendo-ui,controller,kendo-grid,Checkbox,Kendo Ui,Controller,Kendo Grid,我有一个列模板: 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;

我有一个列模板:

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;" });

如何从网格中选择特定列(例如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的列表,您可以在单击事件期间跟踪它们,也可以在触发事件时收集所有id,例如

    $("#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});
    });

编辑:

谢谢!它起作用了!我如何将所有选中的复选框行放入一个数组中,并将所有选中的ID传递给控制器?用一种可能的方法更新了演示和示例。谢谢!这正是我要找的!:我一直在寻找这样的答案,谢谢lazerbrain的提问,也非常感谢Joe的回答和演示
    $("#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});
    });