2013-02-18 42 views
2

我有一個KendoUI網格我正在使用MVC的Web應用程序,所有工作正常,但是我想添加一個自定義命令按鈕,有條件地顯示在UI中,只是執行命令在我的控制器上傳遞它所需的參數。有條件的自定義命令按鈕的MVC中的Kendo UI網格

columns.Command(command => command.Custom("UnlockAccount").SendDataKeys(true).Click()) 

該命令如上所述,但我只希望在DataItem IsLocked屬性爲true時顯示按鈕。

我也無法弄清楚如何在控制器上調用方法。我無法在Kendo網站上找到這個演示,也不知道如何推動這一進展。

回答

2

改爲使用模板列 - 通過ClientTemplate方法。

有條件的模板在論壇上被覆蓋了here多次 - 命令列並不那麼靈活。

3

以下是使用客戶端模板進行條件命令按鈕的具體示例。

const string ShowUpdateButton = "#if (IsNetReversal == false) {#<a class='k-button k-button-icontext k-grid-edit' href='\\#'><span class='k-icon k-edit'></span>Update</a>#}#"; 
const string ShowReverseButton = "#if (IsNetReversal == false) {#<a class='k-button k-button-icontext k-grid-reverse' href='/JournalDetail/Reverse/#: ID #' ><span class='k-icon k-reverse'></span>Reverse</a>#}#"; 
const string ShowDeleteButton = "#if (IsAdjustment == true) {#<a class='k-button k-button-icontext k-grid-delete' href='\\#'><span class='k-icon k-delete'></span>Delete</a>#}#"; 

你可以做模板內嵌,但我覺得更容易(特別是多個按鈕),如果您聲明常量,然後使用的String.Format將它們串聯。

col.Template(o => o).ClientTemplate(string.Format("{0}{1}{2}", ShowUpdateButton, ShowDeleteButton, ShowReverseButton)); 

的好處是它將與彈出的編輯工作,而當用戶取消了編輯的jQuery的黑客會忽略此條件狀況。從彈出編輯器中取消將從視圖模型或Kendo存儲它的位置恢復網格行,從而導致jquery/javascript hack之前的按鈕狀態。上面的方法還會自動連線標準命令,因爲我複製了它們的HTML輸出以用於客戶端模板。

缺點是,如果Kendo更改模式的命令按鈕,客戶端模板可能會失敗。除了這個之外,我還厭倦了其他幾種方法,這種方法的缺點似乎比其他方法更好。

關於Kendo論壇的注意事項:截至本帖發佈之日,他們似乎不允許那些不支持支持的人發帖到論壇,所以我會建議在此發帖。他們監視堆棧溢出,根據我的經驗,他們似乎在這裏更快地回答問題。

相關問題