使 Kendo ASP.NET MVC inCell 可根据 Viewbag 条件进行编辑

Make Kendo ASP.NET MVC inCell Editable based on Viewbag condition

是否可以制作一个 Kendo MVC 网格 .Editable() 基于仅在您有特定 Viewbag 时才允许编辑的功能?

我有一个 Viewbag.DisplayButton 的 viewbag。如果您具有开发角色,则该 viewbag 仅 'true'(因此非开发人员无法编辑任何内容)。我怎样才能使它与 .Editable() 一起工作,以便只有拥有该 viewbag 才能编辑单元格?

目前,如果我设置 Editable(true),那么任何人(开发人员、客户,几乎任何人)都可以编辑该单元格。如果我将它设置为 Editable(false),那么包括开发人员在内的任何人都无法编辑它。所以我需要一个只有当你有那个特定的 viewbag 时才会执行的功能。

为此使用 Razor 代码块。您可以将网格定义分配给变量,然后执行条件逻辑并添加其他配置(如果有)。最后调用 Render 方法。这是一个例子:

<h3>Some content</h3>
@{
  var isAdmin = true;

  var grid = (Html.Kendo().Grid<MyModel>()
             .Name("grid")
             .Columns(columns =>
             {
                 columns.Bound(p => p.MyModelID).Filterable(false);
                 columns.Bound(p => p.SomeModelProperty);
             })
             .Pageable()
             .Scrollable()
             .DataSource(dataSource => dataSource
                 .Ajax()
                 .PageSize(20)
                 .Model(m=>m.Id("MyModelID"))
                 .Read(read => read.Action("Read", "Grid"))
             )
         );

  if (User.IsInRole("Admin"))
  {
      grid.Editable(e=>e.Mode(GridEditMode.InCell));
  }

  grid.Render();
}
<h3>Some other content</h3>