有条件的自定义命令按钮的MVC中的Kendo UI网格

问题描述:

我有一个KendoUI网格我正在使用MVC的Web应用程序,所有工作正常,但是我想添加一个自定义命令按钮,有条件地显示在UI中,只是执行命令在我的控制器上传递它所需的参数。有条件的自定义命令按钮的MVC中的Kendo UI网格

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

该命令如上所述,但我只希望在DataItem IsLocked属性为true时显示按钮。

我也无法弄清楚如何在控制器上调用方法。我无法在Kendo网站上找到这个演示,也不知道如何推动这一进展。

改为使用模板列 - 通过ClientTemplate方法。

有条件的模板在论坛上被覆盖了here多次 - 命令列并不那么灵活。

以下是使用客户端模板进行条件命令按钮的具体示例。

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论坛的注意事项:截至本帖发布之日,他们似乎不允许那些不支持支持的人发帖到论坛,所以我会建议在此发帖。他们监视堆栈溢出,根据我的经验,他们似乎在这里更快地回答问题。