Kendo Grid - 根据Column单元格数据值渲染自定义HTML

时间:2018-06-13 14:43:56

标签: kendo-grid

我是剑道网格的新手。我有一个名为Status的列,列的可能值为1,2,3。如果该值等于1或2,我希望在单元格中显示文本“Good”。如果值为3,我希望在单元格中显示“应用”按钮。用户可以单击按钮以触发弹出窗口并在那里执行某些操作。

我以前使用ag-grid,我知道我可以在cellRenderer中执行此操作:(params)=> {...}根据此单元格的值显示不同的文本。然后,在onCellClicked:(params)=> {...}中,如果值为3,则触发弹出窗口。

我如何在剑道网格中做同样的事情?

1 个答案:

答案 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) #"