有条件的自定义命令按钮的MVC中的Kendo UI网格
问题描述:
我有一个KendoUI网格我正在使用MVC的Web应用程序,所有工作正常,但是我想添加一个自定义命令按钮,有条件地显示在UI中,只是执行命令在我的控制器上传递它所需的参数。有条件的自定义命令按钮的MVC中的Kendo UI网格
columns.Command(command => command.Custom("UnlockAccount").SendDataKeys(true).Click())
该命令如上所述,但我只希望在DataItem IsLocked属性为true时显示按钮。
我也无法弄清楚如何在控制器上调用方法。我无法在Kendo网站上找到这个演示,也不知道如何推动这一进展。
答
以下是使用客户端模板进行条件命令按钮的具体示例。
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论坛的注意事项:截至本帖发布之日,他们似乎不允许那些不支持支持的人发帖到论坛,所以我会建议在此发帖。他们监视堆栈溢出,根据我的经验,他们似乎在这里更快地回答问题。