0

一貫性のない API から返される json があります。つまり、一部のレコードには「年齢」が関連付けられていますが、他のレコードには関連付けられていません。

データを表示/操作するために Kendo UI Grid を設定しようとしています。残念ながら、「年齢」が関連付けられていないレコードが関連付けられているレコードで返されると、剣道は次のエラーで失敗します: Uncaught ReferenceError: Age is not defined

作業グリッドの例を次に示します: http://jsfiddle.net/tmort/CVkpF/

そして、「Age」なしで返される 1 つのレコードを含むグリッドを次に示します: http://jsfiddle.net/tmort/CVkpF/1/ - ページ自体ではなく、コンソールにエラーが表示されるのを確認できます。

年齢が返されていないことを理解するのに十分なほどグリッドを動的にし、それをnullに設定してから続行する方法はありますか?

私が使用しているコード:

    var data = [
    {
    FirstName: 'John',
    LastName: 'Doe',
    City: 'New York City',
    Title: 'Supervisor',
    BirthDate: '1/1/1975',
    Age: '37',
    },
    {
    FirstName: 'Jane',
    LastName: 'Doe',
    City: 'Buffalo',
    Title: 'Sales Associate',
    BirthDate: '1/1/1980',

    }
    ]
$(document).ready(function() {
        var grid = $("#grid").kendoGrid({
            dataSource: {
                data: data,
                schema: {
                    model: {
                        fields: {
                            FirstName: { type: "string" },
                            LastName: { type: "string" },
                            City: { type: "string" },
                            Title: { type: "string" },
                            BirthDate: { type: "date" },
                            Age: { type: "number" }
                        }
                    }
                },
                pageSize: 10
            },
            height: 500,
            scrollable: true,
            sortable: true,
            selectable: true,
            filterable: true,
            pageable: true,
            columns: [
                {
                    field: "FirstName",
                    title: "First Name"
                },
                {
                    field: "LastName",
                    title: "Last Name"
                },
                {
                    field: "City"
                },
                {
                    field: "Title"
                },
                {
                    field: "BirthDate",
                    title: "Birth Date",
                    template: '#= kendo.toString(BirthDate,"MM/dd/yyyy") #'
                },
                {
                    field: "Age"
                }
            ]
        }).data("kendoGrid");

    });

どんな助けでも大歓迎です。ありがとう!

4

4 に答える 4

1

剣道グリッドは欠損値をサポートしていません。オブジェクトをグリッドにバインドできるようにするには、オブジェクトに各行のすべてのメンバーが含まれている必要があります。空白/null 値は、空の文字列または null である必要がありますが、JSON 結果に存在する必要があります。

于 2012-07-19T18:34:55.660 に答える
0

列には、data.field を含むテンプレートを追加します。

       ...
       columns: [
            {
                field: "FirstName",
                title: "First Name",
                template: "#= data.FirstName != null ? FirstName : '' #"
            },
            {
                field: "LastName",
                title: "Last Name",
                template: "#= data.LastName != null ? LastName : '' #"
            },
            {
                field: "City",
                template: "#= data.City != null ? City : '' #"
            },
            {
                field: "Title",
                template: "#= data.Title != null ? Title : '' #"
            },
            {
                field: "BirthDate",
                title: "Birth Date",
                template: '#= data.BirthDate != null ? kendo.toString(BirthDate,"MM/dd/yyyy") : "" #'
            },
            {
                field: "Age",
                template: "#= data.Age != null ? Age : '' #"
            }
        ]
        ...
于 2016-12-08T16:04:32.807 に答える
0

不足しているフィールド (Age) を null として送信してみませんか。コントローラーからデータを取得している場合は、フィールドを追加して UI に送信できます。これにより、物事が適切に機能するようになります。あくまでも私の意見です...

于 2012-06-14T00:00:48.353 に答える
0

剣道グリッドがそれほど柔軟かどうかはわかりませんが、グリッドに入れる前にデータソースを処理することができます。Age をデータソースのフィールドとして追加するか、存在するフィールドに応じてグリッドを設定できます。ソースで CRUD 操作を実行している場合、これはうまく機能しない可能性がありますが、データの表示のみの場合はうまく機能する可能性があります。

他の人は剣道フレームワークについてより良い洞察を持っているかもしれませんが、これは簡単な回避策の提案です!

それが役に立てば幸い!

于 2012-05-29T14:22:31.427 に答える