0

私の見解では、チェックボックスの状態に基づいて更新したい (KendoUI からの) グリッドがあります。アイデアは、チェックボックスがクリックされるたびにチェックボックスの値 (bool) をコントローラーに送信し、チェックボックスの bool 値をパラメーターとしてデータを提供しているサービスを呼び出すことです。そこから、サービス呼び出しからの新しいデータを使用して、グリッドに既に入力されているリストを更新したいと考えています。

私はいくつかの ajax 呼び出しを試みましたが、これに頭を悩ませているようには見えません。

ここに私のインデックスビューがあります:

<div class="row-fluid">
    <div class="span12">
        <div class="k-block">
            <div class="k-header">Unit List</div>
            @Html.CheckBox("mycheckbox")
            @(Html.Kendo().Grid(Model.UnitTypes)
            .Name("Grid")
            .Columns(columns =>
                {
                    columns.Bound(p => p.Id).Groupable(false);
                    columns.Bound(p => p.Name);
                    columns.Command(command => { command.Custom("Edit Unit"); }).Width(160);
                })
                .Groupable()
                .Pageable()
                .Sortable()
                .Scrollable()
                .Filterable()
                  )
          }

        </div>
    </div>

そして、ここに私のコントローラーがあります:

public ActionResult Index()
{
    var client = new UnitServiceClient();
    var listOfUnitsFromService = client.GetListOfUnits(true);

    var model = new UnitModel
                    {
                        UnitTypes = listOfUnitsFromService.ToList()
                    };
    return View(model);
}

ajax呼び出しに関しては完全に空白なので、誰かが助けてくれることを願っています:)

4

2 に答える 2

2

やりたいことは、ブール値を受け取り、グリッドのすべての HTML を含む PartialView を返すコントローラー アクションを作成することです。

次に、Ajax はそのコントローラー アクションを呼び出し、ブール値を渡し、サーバーからグリッド HTML を受け取ります。次に、グリッドを含む div を新しい HTML で更新します。

コントローラ

[HttpPost]
public PartialViewResult Blah(bool someFlag)
{
    // Standard controller code.  Load a model.  Return a PartialView.
}

アヤックス

$.ajax({
    type: "post",
    dataType: "html",
    url: '/Home/Blah',
    data: 'someFlag=' + $('#mycheckbox').val(),
    success: function (response) {
        $('#k-block').html(response);
    },
});
于 2013-04-24T18:57:14.357 に答える
0

わかりましたので、少なくとも今のところ、解決策を見つけました。チェックボックスを FormsCollection とともにコントローラーに渡し、その「オン/オフ」値に基づいて処理を行うことになりました。

私のフォームは、次のマークアップ行を使用して単純に送信されました。

<input type="checkbox" name="refresh" class="k-checkbox" id="refresh" onclick="document.forms.refreshForm.submit();"/>

次に、モデルの「無効」プロパティに基づいて、次のように行のスタイルを設定しました。

    @(Html.Kendo().Grid(Model.UnitTypes)
          .Name("Grid")
          .RowAction(row =>
              {
                  if (row.DataItem.Disabled)
                  {
                      row.HtmlAttributes["style"] = "background-color: LightGray";
                  }
              })
          .Columns(columns =>
              {
                  columns.Bound(p => p.Id).Groupable(false);
                  columns.Bound(p => p.Name);
                  columns.Bound(p => p.Disabled);
                  columns.Command(command => { command.Custom("Edit Unit"); }).Width(160);
              })
          .Groupable()
          .Pageable()
          .Sortable()
          .Scrollable()
          .Filterable())
于 2013-04-25T11:29:03.063 に答える