我是剑道网格的新手。我有一个名为Status
的列,列的可能值为1,2,3
。如果该值等于1或2,我希望在单元格中显示文本“Good”。如果值为3,我希望在单元格中显示“应用”按钮。用户可以单击按钮以触发弹出窗口并在那里执行某些操作。
我以前使用ag-grid,我知道我可以在cellRenderer中执行此操作:(params)=> {...}根据此单元格的值显示不同的文本。然后,在onCellClicked:(params)=> {...}中,如果值为3,则触发弹出窗口。
我如何在剑道网格中做同样的事情?
答案 0 :(得分:2)
如果您使用的是Kendo ASP.NET,请为列状态添加ClientTemplate
:
@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.CustomerViewModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound("Status").ClientTemplate("#if(Status == 1 || Status == 2 ){# Good #}else{# <input type=button value=apply onclick=CallAnyJSFunction() /> #}#");
...
如果您使用的是Kendo UI JS,
<script>
$("#grid").kendoGrid({
columns: [ {
field: "Status",
template: "#if(Status == 1 || Status == 2 ){# Good #}else{# <input type=button value=apply onclick=CallAnyJSFunction() /> #}#"
}],
...
});
</script>
此外,您可以将逻辑包装在javascript函数中并从模板中调用它。
function setStatus(status) {
switch (status) {
case 1:
return "Good";
break;
case 2:
return "Good";
break;
case 3:
return "<input type=button value=apply onclick=CallAnyJSFunction() />";
break;
}
}
columns.Bound("Status").ClientTemplate("#= setStatus(Status) #");
或
template: "#= setStatus(Status) #"