0

Telerikの kendo UI Grid
あります。2 次元オブジェクト配列をグリッドにバインドしたいと考えています。ASP.NET MVC の Visual Studio 2012 で作業しています。JavaScriptソリューションを使用するソリューションがあります。データソースのデータ型は、2 次元のオブジェクト配列です。これは、ソリューションではすべての行と列が動的である必要があるためです。グリッドをバインドする JavaScript コードは次のとおりです。

function createGrid() {
    var url = '@Url.Action("GetSheetData")';
    $.get(url, { hospitalId: 100, screenCode: "Ledger", revisionId: 1, applicationUser: "TestUser" }, function (result) {
        var columnDefs = result.Columns;
        var data = result.Data;

        // Now, create the grid using columnDefs as argument
        var grid = $("#grid").kendoGrid({
            dataSource: {
                data: jQuery.parseJSON(data)
            },
            columns: columnDefs,
            height: 430,
            editable: "incell",
            batch: true,
            sortable: {
                mode: "single",
                allowUnsort: false
            },
            filterable: {
                extra: false,
                operators: {
                    string: { contains: "Contains" }
                }
            },
            scrollable: {
                virtual: true
            },

            navigatable: true
        }).data("kendoGrid");
    });
}

そして、グリッドをサーバーに戻す関数:

    function saveGrid() {
    var  gridDataArray = $('#grid').data('kendoGrid')._data;

    var url = '@Url.Action("SetSheetData")';
    $.post(url, {
        hospitalId: 100
        , screenCode: "Ledger"
        , revisionId: 1
        , applicationUser: "TestUser"
        , dataGrid: JSON.stringify(gridDataArray)
    }
    , function (result) {
        var grid = $("#grid").data("kendoGrid");

    });
}

このメソッドの問題は、コードを呼び出すときのデータです。

var gridDataArray = $('#grid').data('kendoGrid')._data;

データを次のように投稿します。

JSON.stringify(gridDataArray);

文字列化されたオブジェクト内のすべての項目が文字列型になります。数字の人でも。データが正しいデータ型を維持するようにしたい

グリッドのデータ型を安全に保つ方法を知っている人はいますか? タイプとして 2 次元オブジェクト配列をサポートする限り、JavaScript メソッドを含まない他のソリューションも問題ありません。

質問が明確であることを願っています。前もって感謝します

4

1 に答える 1

0

1) _data は (_ に従って) プライベートです。実際にそれを呼び出すべきではありません! ds.data() が仕事をします。

2) データを取得/保存する方法は間違っていませんが、生活を楽にし、剣道トランスポートを適切に定義することをお勧めします。

 var dataSource = new kendo.data.DataSource({
                transport: {
                    read: {
                        url: "http://demos.kendoui.com/service/Products",
                        dataType: "jsonp"
                    }
                }

3)型が関係する限り、型を定義できるモデルを使用してください。

var dataSource = new kendo.data.DataSource({
  schema: {
    model: {
      id: "ProductID",
      fields: {
       //data type of the field {Number|String|Boolean|Date} default is String
        UnitPrice: {
          type: "number",
          defaultValue: 42             
        }
      }
    }
  }
});
于 2013-10-16T13:16:32.603 に答える