下面是使用客户端模板作为条件命令按钮的具体示例。
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 hacks 将忽略条件状态。弹出编辑器中的取消将从视图模型或 Kendo 存储它的任何位置恢复网格行,这会导致任何 jquery/javascript hack 之前的按钮状态。上面的方法也将自动连接标准命令,因为我为客户端模板复制了它们的 HTML 输出。
不利的一面是,如果 Kendo 更改命令按钮的模式,客户端模板可能会失败。我厌倦了除此之外的其他几种方法,这种方法的缺点似乎比其他方法更好。
关于剑道论坛的注意事项:截至本文发布之日,他们似乎不允许不支付支持费用的人在论坛上发帖,所以我建议在这里发布问题。他们监控 Stack Overflow,根据我的经验,他们似乎在这里更快地回答问题。