0

我有一个 来自 Telerik的剑道 UI Grid
我想将一个二维对象数组绑定到网格。我在 ASP.NET MVC 中的 Visual Studio 2012 中工作。我有一个使用 javascript 解决方案的解决方案。数据源的数据类型是二维对象数组。这是因为我们的解决方案中的所有行和列都需要是动态的。这是绑定网格的 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");

    });
}

这个方法的问题是我们调用代码的时候dat:

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

并发布数据:

JSON.stringify(gridDataArray);

字符串化对象中的所有项目都成为字符串类型。即使是那些数字。我希望我的数据保持正确的数据类型

有谁知道如何保证我的网格数据类型安全? 任何其他不包含 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 回答