0

詳細サブグリッドを持つ剣道グリッドを使用しています。残念ながら、更新するのに苦労しています。各アイテムに独自のカスタム ポップアップ エディターがあります (剣道のカスタム バージョンではなく、満たさなければならない他の要件があったため、まったく異なるポップアップです)。

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

                    });

ご協力ありがとうございます。私はそれを終わらせるためにこれに取り組んでいます。

4

2 に答える 2