启用/禁用Kendo Grid Cells

时间:2017-07-13 23:15:20

标签: jquery asp.net kendo-ui kendo-grid kendo-asp.net-mvc

我有一个DropDownlist和Kendo Grid。如果在下拉列表中选择的值为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)))

使用我可以随时编辑单元格,但是我需要一个条件,当下拉列表选择的值更改时,单元格不应该是可编辑的。 (注意:网格在.cshtml(查看)页面中,而不是在js文件中。)

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

如果不使用调用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()之前网格呈现。