剣道グリッドがあり、その中にクライアントテンプレートを使用してレンダリングされるチェックボックスがあります。チェックボックスをオンにすると、隣接する列が有効になります。チェックされていない場合は、列を無効にする必要があります。つまり、ユーザーはその列を編集したり入力したりできません。私はグリッドに編集イベントをバインドすることによってそれをやろうとしましたが、グリッドが編集モードになり、グリッドを変更している間に関数が呼び出されていないときにのみ、編集イベントが呼び出されます。どんな指導も大変感謝しています。別の列の値に基づいて剣道グリッド列を有効または無効にする
コードスニペット:
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 }))
)
)
ロールがチェックボックスとしてそれをレンダリング、モデル内のブール値プロパティです。最初は、チェックボックスはチェックされていないので、ユーザーはロールアップ名を編集できません。しかし、ユーザーが編集モードに入り、チェックボックスを選択すると、ユーザーはロール名を編集できるはずです。デフォルトでは、ロールアップ名を無効にします。このチェックボックスをオンにすると有効になります。
jqueryを使ってこの作業を行うことができます – Keith
@keith:私はjavascriptを使用しています。 – newbie