c# - 如何实现剑道网格列的属性驱动可见性?
问题描述
以下是我的 MVC 视图之一中的剑道网格 -
@(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”,并且逻辑将在属性级别。根据结果,剑道网格应该显示/隐藏该列。
谁能建议我们如何实现这一目标?
另外,如果这里有任何不清楚的地方,请告诉我。
对此的任何帮助将不胜感激。
谢谢
解决方案
如果您有一个决定可见性的模型属性,可以使用 MVC 包装器的Visible 属性。例如:
columns.Bound(p => p.EmployeeSalary).Title("Employee Salary").Visible(Model.IsManager)
推荐阅读
- amazon-web-services - 拒绝除应用程序用户之外的所有人访问 AWS S3 文件
- sql - 从 Microsoft SQL Server 2012 表中删除部分重复行(仅两列中的重复数据)
- reactjs - 使用自定义钩子在 React Typescript 中传递道具
- php - 网络服务器上的 gettext 有多常见?
- python - 如何在事件处理程序(python-socket,sphinx)中保留文档字符串
- sql - 在繁忙时间更改存储过程 - 这会导致锁定和系统崩溃吗?
- c++ - 有没有办法在 c++11 中按索引初始化向量?
- javascript - 使用 P5 创建交互式地图
- excel - VBA Excel将文件保存在Excel宏创建的文件夹中
- c++ - 错误显示 int Clion "multiple definition"