我有一个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文件中。)
请帮我解决这个问题。
答案 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()之前网格呈现。