代码之家  ›  专栏  ›  技术社区  ›  Nirman

如何实现kendo网格列的属性驱动可见性?

  •  1
  • Nirman  · 技术社区  · 6 年前

    下面是我的MVC视图中的Kendo网格-

    @(Html.Kendo().Grid<MyProject.ViewModels.EmployeeViewModel>()
    .Name("EmployeeGrid")
    .DataSource(dataSource => dataSource
            .Ajax()
            .Read(read => read.Action("AdminEmployeeSearchData", "Employee").Type(HttpVerbs.Post))
            .ServerOperation(true)
            )
    .Columns(columns =>
    {
        columns.Bound(p => p.EmployeeID).Title("ID")
        columns.Bound(p => p.EmployeeName).Title("Employee Name")
        columns.Bound(p => p.EmployeeSalary).Title("Employee Salary")
    })
    .AutoBind(false)
    .Sortable()
    .EnableCustomBinding(true)
    

    )

    这里,EmployeeSalary列应该对特定角色可见。 为了实现这一点,一个简单的方法是在视图中使用if…else块,在该视图中,我将验证当前用户角色,并基于该块显示/隐藏列。但是,一旦网格中有许多列,这必然会变得无法管理。

    我正在考虑在视图模型的字段级别通过属性来实现这一点。也就是说,EmployeeSalary字段将具有一些属性,例如“isaccessible”,并且逻辑将位于属性级别。根据结果,kendo网格应该显示/隐藏该列。

    有人能建议我们如何做到这一点吗?

    另外,如果有什么不清楚的地方请告诉我。

    对此,任何帮助都将不胜感激。

    谢谢

    1 回复  |  直到 6 年前
        1
  •  2
  •   Steve Greene    6 年前

    如果您有一个确定可见性的模型属性,那么可以使用MVC包装器 Visible property . 例如:

    columns.Bound(p => p.EmployeeSalary).Title("Employee Salary").Visible(Model.IsManager)