7

Kendo UI MVC グリッドを使用しています。モデルのプロパティの 1 つが bool であるため、チェックボックスとしてグリッドに表示する必要があります。デフォルトでは、Kendo UI は列に「true」と「false」の値として表示します。したがって、最初にクリックしてチェックボックスを取得し、次にクリックしてコンボボックスの値を変更する必要があります。グリッドからデフォルト値を取得する代わりに、ClientTemplate を設定したため、「true」と「false」の値の代わりにチェックボックスを取得しました。

              c.Bound(p => p.GiveUp)
                  .Title("Giveup")
                  .ClientTemplate("<input type='checkbox' id='GiveUp' name='GiveUp' #if(GiveUp){#checked#}# value='#=GiveUp#' />")
                  .Width(50);

このグリッドは、バッチ編集とグリッド内編集 (GridEditMode.InCell) を使用します。

      .Editable(x => x.Mode(GridEditMode.InCell))
      .DataSource(ds => ds.Ajax()
                            .ServerOperation(false)
                            .Events(events => events.Error("error"))
                            .Batch(true)
                            .Model(model => model.Id(p => p.Id))
                            .Read(read => read.Action("Orders", "Order").Data("formattedParameters"))))

したがって、ユーザーがチェックボックスをクリックしてモデルの値を変更できるようにしたいのですが、残念ながらそれは機能しません。チェックボックスの値が変更されていることは視覚的にわかりますが、セルが変更されたことを示す赤い三角形は表示されず、新しい項目の追加ボタンをクリックすると、チェックボックスの値が消えます。

私が間違っていることについてアドバイスをください。

前もって感謝します。

4

2 に答える 2

12

完全なコードがどのように見えるかを見たい人のために。

ホーム.cshtml

    @(Html.Kendo().Grid<OrdersViewModel>()
          .Name("Orders")
          .Columns(c =>
          {
              c.Bound(p => p.Error)
                  .Title("Error")
                  .ClientTemplate("<input type='checkbox' #= Error ? checked='checked': '' # class='chkbx' />")
                  .HtmlAttributes(new {style = "text-align: center"})
                  .Width(50);


<script>
    $(function() {
        $('#Orders').on('click', '.chkbx', function() {
            var checked = $(this).is(':checked');
            var grid = $('#Orders').data().kendoGrid;
            var dataItem = grid.dataItem($(this).closest('tr'));
            dataItem.set('Error', checked);
        });
    });
</script>
于 2012-11-14T16:51:21.113 に答える
8

基本的に、グリッドからレコードを追加/削除すると、赤い三角形は常に消えます(または、並べ替え/ページ/フィルターなどを行うと)、チェックボックスは赤い三角形の問題ではありません。

ここで、チェックボックスについて、再びチェックボックスであるClientTemplateを作成する場合は、セルを編集モードにするために1回クリックする必要があります(エディターテンプレートが再びチェックボックスであるため、違いはわかりません)。したがって、2番目をクリックする必要があります。実際に値を変更する時間。

ベストプラクティスとしてお勧めするのは、ここで説明するアプローチを使用することです。これは、上記のアプローチで2つのクリックを処理するために追加のロジックを適用するよりもはるかに高速で(グリッドの操作が少ない)、簡単です。

于 2012-11-12T20:43:22.803 に答える