2012-11-13 8 views
9

Özel bir silme işlevini çalıştırmak için özel bir komut düğmesi oluşturmaya çalışıyorum. Modelimin kimliğini özel silme işlevime iletmem gerekiyor. Bir test olarak statik '5' geçmeye çalıştığımı fark edersiniz ama satırın kimliğini geçmek istiyorum.Kendo MVC Grid: Özel bir komut düğmesi oluşturma ve parametreleri aktarma

Herhangi bir yardım büyük memnuniyetle karşılanacaktır.

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

cevap

10

Bu belirtilen herhangi Veri anahtarlarını göndermek olmalıdır:

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

DataKeys DataSource bölümünde belirtilir:

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

Ben de Kendo sitesinde bu sayfayı buldum. Benzer bir sorunla karşılaşmamda bana yardımcı oldu: http://docs.kendoui.com/getting-started/using-kendo-with/aspnet-mvc/migration/widgets/grid#editing

Bu yardımcı olur!

+2

Bu datakey işlevine DeleteProperty işlevinde nasıl erişebilirim? function DeleteProperty (e) ... Bir uyarı denedim (e) ve tüm gördüğüm nesne. Kimliği almam gerek. – Mithrilhall

+7

Benim hatam. Bunun javascript işlevini çağırdığını bilmiyordum. Afedersiniz! Bunu göz önünde bulundurarak, özel komut sözdizimini: komutuna değiştirin. Özel ("Sil") 'ı tıklatın ("PropertyPage.DeleteProperty"); Ve bu gibi görünmelidir sizin fonksiyonu: fonksiyon deleteProperty (e) {// Veya ne olursa olsun işlev adıdır \t var Dataıtem = this.dataItem ($ (e.currentTarget) .closest ("tr")); \t var id = dataItem.Id; \t alert (id); } –

İlgili konular