有没有办法使用委托/动作来生成Kendo Grid的列?

时间:2015-11-17 22:38:44

标签: .net model-view-controller kendo-ui kendo-grid

我有一个剑道网格如下:

@(Html.Kendo().Grid<ExpenseClaimHeader>()
        .Name("Manage-Expense-Type-grid")

    .Columns(columns.Bound(o => o.FromDate).Title("From Date").Width(230);
        columns.Bound(o => o.ToDate).Title("To Date").Width(230);
    })
}

我想根据它所在的View的状态生成列。我有一个模型,它在视图的状态下传递,并根据它,我想添加和删除列。

这样做的最佳方式是什么?

我试图看看我是否可以以某种方式创建一个委托,因为Columns()似乎正在采取行动?

Columns(System.Action<Kendo.Mvc.UI.Fluent.GridColumnFactory<T>>)

我如何在页面中创建此内容?

1 个答案:

答案 0 :(得分:1)

您可以将列绑定到任何属性(最好是记录ID),并使用ClientTemplate显示您想要的任何内容:

columns.Bound(o => o.Id).ClientTemplate("#={ ... }#");

如果你想有条件地显示列,只需在一个if语句中包含columns.Bound(),所以它看起来像这样:

@(Html.Kendo().Grid<ExpenseClaimHeader>()
   .Name("Manage-Expense-Type-grid")
   if({condition}) {
      .Columns(columns.Bound(o => o.FromDate).Title("From Date").Width(230);
   }
)