Enable/Disable Kendo 网格单元格

Enable/Disable Kendo Grid Cells

我有一个下拉列表和 Kendo 网格。如果在下拉列表中选择的值是 1,则网格中的单元格应该是可编辑的,如果选择的值为 2,则网格中的单元格应该是不可编辑的。以下是 Kendo Grid.

的代码
 @(Html.Kendo().Grid(Model.Data.Items)
  .Name("Grid1")
  .Columns(columns =>
       {
         columns.Bound(p => p.first).Title("first").Width(100).HeaderHtmlAttributes(new { style = "text-align:center;font-weight:bold" }).HtmlAttributes(new { style = "text-align: right;" }).Format("{0:N}").ClientTemplate("");
         columns.Bound(p => p.second).Title("second").Width(100).HeaderHtmlAttributes(new { style = "text-align:center;font-weight:bold" }).HtmlAttributes(new { style = "text-align: right;" }).Format("{0:N}");
         columns.Bound(p => p.third).Title("Third").Width(100).HeaderHtmlAttributes(new { style = "text-align:center;font-weight:bold" }).HtmlAttributes(new { style = "text-align: center;" });
       })
  .DataSource(dataSource => dataSource
  .Ajax()
  .ServerOperation(true)
  .Model(Model=> { Model.Id(p => p.first); })

   )
  .Selectable()                                        
  .Editable(editable => editable.Mode(GridEditMode.InCell).CreateAt(GridInsertRowPosition.Bottom))
  .Scrollable(scr => scr.Height(179)))

使用我可以随时编辑单元格,但我需要一个条件,当下拉列表选择的值发生变化时,单元格不应是可编辑的。 (注:Grid在.cshtml(view)页面中,不在js文件中。)

请帮我解决这个问题。

如果不使用调用 Javascript 函数的网格 event,不确定这是否不可能。

您可以使用连接到函数的 edit 事件,您可以使用该函数对数据应用条件检查:

function onEdit(e) {          
    if(e.model.ShipCountry == "Germany" && e.container.index() == 0) {
       this.closeCell(); 
    }
}

在上面的示例中,onEdit 函数检查当前单击的单元格中的行是否有 ShipCountry 等于德国以及事件的发件人是否在第 0 列。如果是,它会关闭单元格,从而阻止它进行编辑。

这里有一个Dojo example来演示。查看控制台以查看 e 通过编辑事件发送的对象属性和 e.model 必须提供的对象属性。

注意:该示例纯粹是 Javascript,但您可以使用以下方法将 edit 事件连接到 MVC 上的网格:

.Events(e => e.Edit("onEdit"))

注意:.js文件中的函数(onEdit)应该放在$(document).ready函数之前,因为网格在document.ready()被触发之前渲染。