【问题标题】:Kendo Grid - Read() not working剑道网格 - 读取()不工作
【发布时间】:2014-01-31 15:41:33
【问题描述】:

我正在使用带有详细信息子网格的剑道网格。不幸的是,我很难让它更新。我们为每个项目都有自己的自定义弹出编辑器(不是自定义版本的剑道,而是完全不同的弹出窗口,因为我们必须满足其他要求。)

完成 ajax 调用后弹出窗口上的保存按钮使用以下回调来刷新网格。这似乎不起作用。我已经在详细信息部分测试了一个项目的更新。网格完全崩溃,我没有错误,但是重新展开网格时,有问题的项目没有改变。然而,完全关闭网格并重新打开网格确实有效。

        function refreshData() {
        if (!settings.dataUrl)
            return;

        $.ajax({
            type: "POST",
            url: settings.dataUrl,
            data: new Object(),
            dataType: "json",
            contentType: "application/json"
        }).done(function (data, textStatus, jqXhr) {
            // Perform mapping function on data
            if (settings.mapperFunction) {
                data = settings.mapperFunction(data, settings.pageSettings);
            }
            var dataForGrid = data;
            if (settings.transformGridDataCallback)
                dataForGrid = settings.transformGridDataCallback(JSON.parse(JSON.stringify(dataForGrid)));

            settings.unfilteredTotal = dataForGrid.Data.Data.length;
            outterGridDataSource.data = dataForGrid.Data.Data;
            outterGridDataSource.read();


        });

    };

这里是为子网格定义DetailInit的示例代码。

detailInit: function (e) {


                    var innerColumns = [
                       ...column definitions
                    ];

                    var $detail = $("<div />").addClass("grid_detail class");
                    $detail.append($("<div />").addClass("grid inner_grid"));

                    //#region Problems Details
                    $detail.find(".inner_grid").kendoGrid({
                        scrollable: false,
                        editable: false,
                        dataSource: {
                            data: e.data.subItems,
                            transport: { //need this for Kendo Grid to handle updates properly
                                read: function (o) {
                                    o.success(e.data.subItems);
                                },
                                create: function (o) {

                                },
                                update: function (o) {

                                },
                                destroy: function (o) {
                                    o.success();

                                }
                            },
                            schema: {
                                model: { 
                                    id: "Id", 
                                    fields: {
                                        display: { defaultValue: settings.pageSettings.stringvalue1 }
                                    }
                                }
                            }
                        },
                        columns: innerColumns

                    });

感谢您的帮助。我将努力完成它。

【问题讨论】:

    标签: jquery kendo-ui kendo-grid kendo-datasource


    【解决方案1】:

    这一行:

    outterGridDataSource.data = dataForGrid.Data.Data;
    

    应该是

    outterGridDataSource.data(dataForGrid.Data.Data);
    

    (您的问题中缺少很多代码,因此主要是猜测)

    【讨论】:

      【解决方案2】:

      问题其实是:

      outterGrid.dataSource.transport.read 需要被覆盖。我们在上面构建的插件假定您永远不会有子网格并将数据的变量名称硬编码到读取函数中。覆盖这个函数:

      outterGrid.dataSource.transport.read = function(o){
      o.success(dataForGrid.Data.Data);
      }
      

      这是有效的,必须在调用 outterGrid.dataSource.read() 之前执行;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-04
        相关资源
        最近更新 更多