【发布时间】:2017-10-23 14:24:44
【问题描述】:
我有一个剑道网格,其中有一个复选框,它是使用客户端模板呈现的。如果选中该复选框,则我希望启用与其相邻的列,如果未选中,则应禁用该列,即用户不应对其进行编辑或键入。我尝试通过将编辑事件绑定到网格来做到这一点,但只有当网格进入编辑模式时才会调用编辑事件,并且在对网格进行更改时不会调用该函数。非常感谢任何指导。
代码sn-p:
debugger;
function OnGridChange(e) {
console.log("grid edit mode",e);
var model = $("#AppAccountInternalGrid").data("kendoGrid");
console.log("data source edit mode");
if (e.model.Roll == "true")
$(e.container).find('input[name="RollupName"]').attr("disabled", false);
else
$(e.container).find('input[name="RollupName"]').attr("disabled", true);
}
@(Html.Kendo().Grid(Model.App_Client_Mapping)
.Name("AppAccountInternalGrid")
.Events(ev=>ev.Edit("OnGridChange"))
.Columns(columns =>
{
columns.Bound(p => p.AccountMappingID).Hidden().Title("AccountMappingID").Width(130);
columns.Bound(p => p.ExternalAccount).Title("ExternalAccount").Width(150);
columns.Bound(p => p.Roll).ClientTemplate("<input onchange='OnGridChange(#=AccountMappingID#)' type='checkbox' " +
"#=Roll? 'checked=checked' : '' #" +
"disabled='disabled' </input>").Width(150);
columns.Bound(p => p.RollupName).Title("RollupName").Width(150).HtmlAttributes(new{@class="disabled"});
columns.Command(command => { command.Edit(); command.Destroy(); }).Width(150);
})
.Editable(editable => editable.Mode(GridEditMode.InLine))
.ColumnMenu()
.DataSource(dataSource => dataSource
.Ajax()
//.Events(ev=>ev.("OnGridChange"))
.PageSize(50)
.Model(model =>
{
model.Id(p => p.AccountMappingID);
}
)
.Update(update => update.Action("Editing_Update", "AppAccounts", new { clientid = @clientid }))
)
)
Roll 在模型中具有 bool 属性,将其呈现为复选框。最初,未勾选复选框,因此用户无法编辑汇总名称。但是当用户进入编辑模式并勾选复选框时,用户应该能够编辑卷名。默认情况下,我希望禁用汇总名称。它应该在选中复选框时启用。
【问题讨论】:
-
你可以使用 jquery 来完成这项工作
-
@keith:我正在使用 javascript。
标签: javascript asp.net-mvc-4 checkbox kendo-grid kendo-asp.net-mvc