Kendo Grid MVC / ASP.Net在编辑期间禁用字段
我有一个具有各种下拉菜单的Kendo UI网格。 两列尤其是Schema和Mapping。 Schema下拉菜单有多种用户可以选择的选项,其中之一是“Custom”。 在这种情况下,我希望启用“映射”列,以便用户可以选择自定义映射。 如果Schema列被选为其他任何内容,则Mapping列需要为空和禁用。
我努力让这个功能按预期工作。 如果我将Events侦听器添加到模型中,我可以按照我的意愿触发javascript函数,但是我似乎无法找到启用或禁用后的属性。 如果我将事件订阅到网格本身,我可以找到属性,但Events.Change()仅在该行完成编辑并且用户点击“更新”后触发。
我需要这个动态工作。 因此,用户编辑该行,对Schema进行更改,并根据选择的内容,Mapping下拉列表或者启用强制条目或禁用,并且即时禁用。
这是我迄今为止的地方。 首先是电网代码:
@(Html.Kendo().Grid<JobDetailsViewModel>()
.Name("Grid")
.NoRecords("No job details")
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Columns(columns =>
{
columns.Command(c => { c.Edit().Text("Edit Details"); c.Destroy().Text("Remove"); });
columns.ForeignKey(c => c.CustomerId, (System.Collections.IEnumerable)ViewData["CustomersDropDown"], "Id", "Name").Title("Customer");
columns.ForeignKey(c => c.Schema, EnumHelper.GetSelectList(typeof(Schema)).ToList(), "Value", "Text");
columns.ForeignKey(c => c.MappingId, (System.Collections.IEnumerable)ViewData["MappingsDropDown"], "Id", "DisplayTitle").Title("Mapping");
})
.DataSource(dataSource => dataSource
.Ajax()
.Model(model => {
model.Id(o => o.Id);
model.Field(o => o.Id).Editable(false).DefaultValue(Guid.Empty);
model.Field(o => o.JobId).DefaultValue(Model.SelectedJobId);
model.Field(f => f.Customer).Editable(true).DefaultValue(ViewData["defaultCustomersDropDown"] as JobCustomerViewModel);
model.Field(f => f.Mapping).Editable(true).DefaultValue(ViewData["defaultMappingsDropDown"] as JobMappingViewModel);
})
.Create(create => create.Action("AddJobDetail", "Admin").Type(HttpVerbs.Post))
.Read(read => read.Action("ReadJobDetails", "Admin").Type(HttpVerbs.Post))
.Update(update => update.Action("EditJobDetail", "Admin").Type(HttpVerbs.Post))
.Destroy(destroy => destroy.Action("DeleteJobDetail", "Admin").Type(HttpVerbs.Post))
// .Events(events => events.Change("rowEdit"))
)
.HtmlAttributes(new { style = "display:table; width:100%; height: 100%;" })
.Events(change => change.Edit("rowEdit"))
.Pageable()
)
...和我的Javascript,其中大部分是由于我搞乱了它而被禁用。 但它可能会给你和想法,我到目前为止尝试...
<script type="text/javascript">
function rowEdit(e) {
console.log("Hi there");
console.log(e);
if (e.action == "itemchange" && e.field == "ImportSchema") {
var grid = $('#Grid').data('kendoGrid');
console.log(grid);
if (e.items[0].ImportSchema != 4) {
e.items[0].ImportMappingId = 0;
e.items[0].ImportMapping = null;
//grid.data[0].field.ImportMappingId.closeCell();
// e.items[0].ImportMappingId HOW TO DISABLE?
console.log("Should be disabled");
}
else {
console.log("Should be enabled");
// e.items[0].ImportMappingId HOW TO ENABLE AND MAKE MANDATORY?
}
}
}
</script>
链接地址: http://www.djcxy.com/p/70441.html