1

私は Kendo+razor を使用しており、特定のデータ モデルを持たない Kendo グリッドを作成したいと考えています (私の場合、ユーザーが入力した SQL クエリの結果を表示する必要があるため、結果に任意の数値を含めることができます)。 /列の種類)。汎用にするために、グリッドを System.data.DataTable にバインドし、そのグリッドにデータを入力する ajax 呼び出しを試みました。初めてロードしたときは正常に動作しますが、同じグリッドを再作成すると、列名が更新されません。

シナリオ:
ボタンのクリックで Ajax 呼び出しが行われ、グリッドにクエリ結果が入力されます。最初の ajax 呼び出しでは、結果は属性 id、name、および description を持つ JSON でした。グリッドは、上記の 3 つの列と 4 つの行で正しいデータを示しました。
2 回目の ajax 呼び出しでは、応答 JSON に属性 UserName、UserType、Address、PhoneNumber が含まれます。今回は、グリッドはモデル バインディングを更新せず、列は前の 3 つの列 id、name、および description のままですが、行数は更新されません。その中のデータ (返された JSON に列が存在しないため)

毎回異なる可能性がある、返された JSON 属性に列を再バインドしたいと考えています。

ここに私のHTMLコードがあります:

@model System.Data.DataTable
<div>
@(Html.Kendo().Grid(Model)
.Name("ResultsGrid") 
.TableHtmlAttributes(new { Class = "kendoGrid" })
)
</div>

およびボタンクリックコードのJavascript:

function execute() {
 $.ajax({
 url: "something something",
 type: "GET",
 contentType: "application/json;charset=utf-8",
 data: "",
 dataType: "json",
 success: function (data) {
        $("#ResultsGrid").kendoGrid({
              scrollable: false,
              pageable: true,
              sortable: true,
              resizable: true,
              dataSource: {
                        data: data,
                        pageSize: 5
                    }
                });
 }
}

グリッドを更新して列を新しい JSON 属性にバインドするにはどうすればよいですか?

4

2 に答える 2

1

最初に古いグリッドを破棄してから、新しいグリッドを作成する必要があります。

success: function(data) {
    // get reference to the grid instance
    var grid = $("#ResultsGrid").data("kendoGrid");
    // destroy it
    grid.destroy();
    $("#ResultsGrid")
        .empty() // clear the old HTML
        .kendoGrid( {
           dataSource: {
              data: data,
              pageSize: 5
           }
        });

}
于 2013-04-18T08:16:17.287 に答える
0
success: function(data) {
// get reference to the grid instance
var grid = $("#ResultsGrid").data("kendoGrid");
// destroy it
grid.destroy();
$("#ResultsGrid")
    .empty() // clear the old HTML
    .kendoGrid( {
       dataSource: {
          data: data,
          pageSize: 5
       }
    });

}
于 2015-02-23T07:02:02.953 に答える