2015-03-23 17 views
5

Ho un modello di colonna:Casella colonna, ottenere i valori selezionati e passare al controllore

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

ho selezionare le righe con questo codice:

function onDataBound(e) { 
    $(".checkbox").bind("change", function(e) { 
     $(e.target).closest("tr").toggleClass("k-state-selected"); 
    }) 
} 

Come posso selezionare una determinata colonna (ad es. Id) dalla griglia e passarli al controller?

risposta

9

È possibile accedere ai dati backing sulla griglia nel vostro gestore di eventi

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

per ottenere un elenco dei selezionati id è possibile tenerne traccia durante l'evento click o semplicemente raccogliere tutti quando un evento viene generato , per esempio.

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

edit: demo

+0

Grazie! Funziona! Come posso inserire tutte le righe selezionate in un array e passare tutti gli ID selezionati al controller? – lazerbrain

+0

Aggiornato la demo e l'esempio con un possibile approccio a questo. – Joe

+0

Grazie! Questo è esattamente quello che sto cercando! :) – lazerbrain