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()被触发之前渲染。
我有一个下拉列表和 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()被触发之前渲染。