有几种方法可以做到这一点。
首先,您可以使用网格配置中的内置编辑/删除选项
像这样:
columns.Command(command =>
{
command.Edit();
command.Destroy();
});
然后只需连接编辑配置并适当地销毁delete 命令。
或者,您可以使用以下两种方法之一将这些模板化:
第一个内联模板:
columns.Bound(c => c.ID).ClientTemplate("<a href='Edit/#=data.ID#'>Edit Link #=data.ID#</a>
<a href='Delete/#=data.ID#'>Delete Link #=data.ID#</a>")
所以这只是绑定到一个列,如果需要,可以使用标准 html 和 javascript 根据您的要求添加模板。这对于简单的事情很好,但如果你有更复杂的templates,这会导致第二个方法创建一个模板并像这样调用它:
columns.Bound(c => c.ID).ClientTemplate("#=getButtonTemplate(data,'buttonsTemplate')#")
然后像这样创建你的模板:
<script id="buttonsTemplate" type="text/x-kendo-template">
<div class='btn-group'>
<a class="btn btn-primary" href='@Url.Action("{edit action}", "controller")/#=ID#'>Edit Link #=ID#</a>
<a class="btn btn-danger" href='@Url.Action("{delete action}", "controller")/#=ID#'>Delete Link #=ID#</a>
<div>
</script>
然后是getButtonTemplate函数:
function getButtonTemplate(data, templateName) {
var templateObj = $("#" + templateName).html();
var template = kendo.template(templateObj);
return template(data);
}
所以让我解释一下使用第二种方法的情况。
我们没有将列中的 html 模板化,而是将其提取为两个 components,以便找到更好的词。
我们使用 getButtonTemplate 函数在数据项和模板的 id 中传递 2 个参数。此函数只是将传递的数据对象加载到模板中,然后 kendo 魔术渲染 html 并根据需要注入值。查看剑道演示站点以获取有关此主题的更多信息。
模板元素可以是 html 和 javascript 的混合,因此如果您需要在模板中应用一些逻辑,可以在此处完成。再次参考剑道网站以获取有关此主题的更多信息。
我个人更喜欢做这个客户端模板的第二种方法,因为它更容易管理和进行更改,而无需流氓哈希或括号破坏代码。
如果您需要更多信息,请告诉我,我会为您更新答案。