2012-11-13 71 views
9

我試圖創建自定義命令按鈕來觸發自定義刪除功能。我需要將我的模型的ID傳遞給我的自定義刪除函數。你會注意到我試圖傳入一個靜態'5'作爲測試,但我想傳入該行的ID。Kendo MVC Grid:創建自定義命令按鈕並傳遞參數

任何幫助將不勝感激。

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

回答

10

這應該送指定的任何數據項:

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

DataKeys在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")) 

我也發現了劍道的網站此頁面。當我遇到類似問題時,它幫助我: http://docs.kendoui.com/getting-started/using-kendo-with/aspnet-mvc/migration/widgets/grid#editing

希望這有助於您!

+2

我該如何訪問我的函數DeleteProperty中的datakey? 函數DeleteProperty(e)... 我嘗試了一個警報(e),我看到的只是對象。我需要得到Id。 – Mithrilhall

+7

我的錯誤。我沒有意識到這是調用JavaScript函數。抱歉!考慮到這一點,將您的自定義命令語法更改爲: command.Custom(「Delete」)。Click(「PropertyPage.DeleteProperty」);你的函數應該看起來像這樣: 函數DeleteProperty(e){//或者任何你的函數名是 \t var dataItem = this.dataItem($(e.currentTarget).closest(「tr」)); \t var id = dataItem.Id; \t alert(id); } –

相關問題