有没有办法使用 delegate/action 生成 Kendo 网格的列?

Is there a way to use a delegate/action to generate a Kendo Grid's columns?

我有一个 Kendo 网格如下:

@(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);
    })
}

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

最好的方法是什么?

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

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

如何在页面中创建它?

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

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

如果您想有条件地显示列,只需将 columns.Bound() 括在 if 语句中,它看起来像这样:

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