2012-11-13 6 views
9

Ich versuche, eine benutzerdefinierte Befehlsschaltfläche zu erstellen, um eine benutzerdefinierte Löschfunktion auszulösen. Ich muss die ID meines Modells an meine benutzerdefinierte Löschfunktion übergeben. Sie werden feststellen, dass ich versuche, eine statische "5" als Test zu übergeben, aber ich möchte die ID der Zeile weitergeben.Kendo MVC Grid: Erstellen einer benutzerdefinierten Befehlsschaltfläche und Übergeben von Parametern

Jede Hilfe würde sehr geschätzt werden.

@(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")) 
)) 

Antwort

10

Dies sollte alle Datenschlüssel angegeben senden:

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

Datakeys werden in der Datasource-Abschnitt angegeben:

.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")) 

Ich fand auch diese Seite auf Kendo Website. Es half mir, als ich ein ähnliches Problem hatte: http://docs.kendoui.com/getting-started/using-kendo-with/aspnet-mvc/migration/widgets/grid#editing

Hoffe, das hilft!

+2

Wie würde ich auf diesen Datakey in meiner Funktion DeleteProperty zugreifen? Funktion DeleteProperty (e) ... Ich habe versucht, eine Warnung (e) und alles, was ich sehe, ist Objekt. Ich muss die ID bekommen. – Mithrilhall

+7

Mein Fehler. Ich habe nicht bemerkt, dass dies eine JavaScript-Funktion aufgerufen hat. Es tut uns leid! In diesem Sinne ändern Sie Ihre benutzerdefinierte Befehlssyntax in: command.Custom ("Delete"). Klicken Sie auf ("PropertyPage.DeleteProperty"); Und Ihre Funktion sollte so aussehen: Funktion DeleteProperty (e) {// Oder was auch immer Ihr Funktionsname ist \t var dataItem = this.dataItem ($ (e.currentTarget) .closes ("tr")); \t var id = dataItem.Id; \t Warnung (ID); } –