サーバー側バインディングから ajax の使用に移行する 2 層の階層グリッドがあります。データの両方のレイヤーの ajax 読み取りは正しく機能していますが、ClientTemplate を使用して条件付きロジックに基づいて列をレンダリングするのが困難です。
以下は、サーバー側バインディングのバージョンです。同じ効果を得るには ClientTemplate と式 #=# を使用する必要があることは理解していますが、2 つの問題があります。
- CheckBoxFor などの html ヘルパー メソッドを使用できるように、行ごとに変数 'i' をインクリメントする方法を教えてください。
- @ を変換して ClientTemplate 式を使用する方法。条件付きロジックは、ビューのモデルのプロパティと、バインドされた要素 (MyViewModel) のプロパティを使用し、モデルのプロパティの混合を使用する条件付きロジックを使用することに注意してください。
これを式に変換すると、最も役に立ちます。
var i = -1;
@(Html.Kendo().Grid<MyViewModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(c => c.Selected).Title("")
.Template(
@<text>
@{i++;}
@if (Model.Permissions.HasInsertAccess && item.Status == Status.Created)
{
<input type="hidden" name="MyViewModels.Index" value="@i" />
@Html.CheckBoxFor(m => m.MyViewModels[i].Selected)
}
</text>);
columns.Bound(c => c.Id)
.Template(@<text>@Html.HiddenFor(m => m.MyViewModels[i].Id)@item.Id</text>)