如何实现 Kendo 网格列的属性驱动可见性?
How to implement attribute driven visibility of Kendo grid columns?
以下是我的一个 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 网格应该显示/隐藏该列。
任何人都可以建议我们如何实现这一目标吗?
此外,如果这里有任何不清楚的地方,请告诉我。
如有任何帮助,我们将不胜感激。
谢谢
如果您有一个确定可见性的模型 属性,可以使用 MVC 包装器的 Visible property。例如:
columns.Bound(p => p.EmployeeSalary).Title("Employee Salary").Visible(Model.IsManager)
以下是我的一个 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 网格应该显示/隐藏该列。
任何人都可以建议我们如何实现这一目标吗?
此外,如果这里有任何不清楚的地方,请告诉我。
如有任何帮助,我们将不胜感激。
谢谢
如果您有一个确定可见性的模型 属性,可以使用 MVC 包装器的 Visible property。例如:
columns.Bound(p => p.EmployeeSalary).Title("Employee Salary").Visible(Model.IsManager)