2012-11-13 2 views
9

Sto provando a creare un pulsante di comando personalizzato per attivare una funzione di eliminazione personalizzata. Devo passare l'ID del mio modello alla mia funzione di eliminazione personalizzata. Noterai che sto provando a passare un "5" statico come test, ma vorrei passare l'ID della riga.Kendo MVC Grid: creazione di un pulsante di comando personalizzato e parametri di passaggio

Qualsiasi aiuto sarebbe molto apprezzato.

@(Html.Kendo().Grid(Model) 
.Name("Grid") 
.Columns(columns => 
{ 
    columns.Bound(p => p.Name).Width(240); 
    columns.Bound(p => p.City).Width(170); 
    columns.Bound(p => p.State).Width(170); 
    columns.Command(command => 
    { 
     command.Edit(); 
     command.Custom("Delete").Click("PropertyPage.DeleteProperty").HtmlAttributes(new { @Id = 5 }); 
     }).Width(166); 
    }) 
    .Scrollable() 
    .Editable(editable => editable.Mode(GridEditMode.InLine)) 
    .DataSource(dataSource => dataSource 
     .Ajax() 
     .Model(model => model.Id(p => p.Id)) 
     .Read(read => read.Action("PropertyRead", "Property")) 
     .Update(update => update.Action("Update", "Property")) 
     .Destroy(update => update.Action("Delete", "Property")) 
)) 

risposta

10

Questo dovrebbe inviare eventuali chiavi di dati specificato:

command.Custom("Delete").SendDataKeys(true).Click("PropertyPage.DeleteProperty"); 

DataKeys sono specificati nella sezione DataSource:

.DataSource(dataSource => dataSource 
    .Ajax() 
    .Model(model => model.Id(p => p.Id)) // THIS IS YOUR DATA KEY 
    .Read(read => read.Action("PropertyRead", "Property")) 
    .Update(update => update.Action("Update", "Property")) 
    .Destroy(update => update.Action("Delete", "Property")) 

Ho anche trovato questa pagina sul sito di Kendo. Mi ha aiutato quando stavo avendo un problema simile: http://docs.kendoui.com/getting-started/using-kendo-with/aspnet-mvc/migration/widgets/grid#editing

Spero che questo aiuti!

+2

Come accedere a quel datakey nella mia funzione DeleteProperty? funzione DeleteProperty (e) ... Ho provato un avviso (e) e tutto quello che vedo è l'oggetto. Ho bisogno di ottenere l'Id. – Mithrilhall

+7

Il mio errore. Non avevo capito che si trattava di una funzione javascript. Scusate! Con questo in mente, modifica la sintassi del comando personalizzato su: command.Custom ("Delete"). Click ("PropertyPage.DeleteProperty"); E la funzione dovrebbe essere simile a questo: la funzione deleteProperty (e) {// O qualunque sia il tuo nome della funzione è \t var = dataItem this.dataItem ($ (e.currentTarget) .closest ("tr")); \t var id = dataItem.Id; avviso \t (id); } –