3

動的な列を持つ剣道グリッドを作成したいのですが、すべての列がクライアント側で作成されます。

例として:

グリッドを作成するために以下のコードを記述しました:

var grid = $("#grid");
        grid.children().remove();
        grid.kendoGrid({
            columns: [{ title: 'One', width: '100px' }, { title: 'Two', width: '100px' }, {title: 'Three', width:'100px'}],
            dataSource: {
                transport: {
                    read: {
                        url: "@Url.Action("")",
                        type: "GET",
                        dataType: "json",
                        traditional: true,
                        data: {
                            itemTypeId: $("#").val(),
                            where: ["", "", "", "", ""],
                            orderBy: ["", "", ""],
                        },
                    },
                },
                schema: {
                    data: "",
                    total: "",
                },
                serverPaging: true,
                pageSize: 4,
                error: function (e) {
                    alert(e.errors);
                }
            },
            pageable: true,
            resizable: true,
            reorderable: true,
        })
    }

私が列を定義するとき:

columns: [{ title: 'One', width: '100px' }, { title: 'Two', width: '100px' }, {title: 'Three', width:'100px'}],

上記のコードは正常に機能しています。

しかし、機能していないループでこれらすべての列を作成したいと思います。

のように:私はjavascript変数でスキーマを保持し、それを剣道グリッドに割り当てています。

Var columnSchema = "{ title: 'One', width: '100px' },{ title: 'Two', width: '100px' },{ title: 'Two', width: '100px' }";

columns : [columnSchema]

しかし、それは機能していません。

4

1 に答える 1

3

コードにわずかな変更を加えると、機能するはずです。

var columnSchema = [{ title: 'One', width: '100px' },{ title: 'Two', width: '100px' },{ title: 'Three', width: '100px' }];

grid.kendoGrid({
    // .. other properties ..
    columns : columnSchema
});

columnSchema変数を文字列ではなく配列として定義する必要があります(私の例を参照)。これで機能します。

アレイを構築することもできます。

var columnSchema = [];
columnSchema.push({ title: 'One', width: '100px' });
columnSchema.push({ title: 'Two', width: '100px' });
columnSchema.push({ title: 'Three', width: '100px' });

push(..)必要に応じて、他の場所から列情報を読み取るループ内で使用できます。

変数を使用してグリッドを初期化する前にこれが行われている限り。グリッドが作成されると、列を変更することはできません。

グリッドの作成後に列を変更する必要がある場合は、destroy()最初にメソッドを呼び出してからkendoGrid(..)、新しい列の仕様を再度呼び出す必要があります。

于 2013-04-02T11:58:41.870 に答える