0

dgrid を使用して (サンプルを使用して) グリッド レイアウトのクラスを実装しようとしましたが、グリッドを読み込むときにこのエラーが発生します ( subRows is undefined )。私のコードは次のようになります。

define([
    "dojo/_base/declare",
    "dojo/_base/lang",
    "dgrid/Grid",
    "dgrid/Keyboard", 
    "dgrid/Selection"
], function(
    declare,
    lang,
    Grid,
    Keyboard, 
    Selection
){

    return declare([Grid, Keyboard, Selection], {

            columns: {
                first: "First Name",
                last: "Last Name",
                age: "Age"
            },
            selectionMode: "single", // for Selection; only select a single row at a time
            cellNavigation: false, // for Keyboard; allow only row-level keyboard navigation

         constructor: function() {
              var data = [
            { first: "Bob", last: "Barker", age: 89 },
            { first: "Vanna", last: "White", age: 55 },
            { first: "Pat", last: "Sajak", age: 65 }
            ];

            this.renderArray(data);
        }
    });
});

そして、このように呼び出し/作成すると、

app.gridLayout = new GridLayout().placeAt(document.body);
4

1 に答える 1

2

constructorコードをpostCreateメソッドに配置します。

return declare([Grid, Keyboard, Selection], {

    columns: {
        first: "First Name",
        last: "Last Name",
        age: "Age"
    },

    selectionMode: "single",
    cellNavigation: false,

    postCreate: function() {
        var data = [
            { first: "Bob", last: "Barker", age: 89},
            { first: "Vanna", last: "White", age: 55},
            { first: "Pat", last: "Sajak", age: 65}
        ];

        this.renderArray(data);
    }
});

また、依存関係を最小限に抑えるためにdijitdgridではないため、メソッドがないことに注意してください。ここには 2 つのオプションがあります。placeAt()

  1. DOM ノードまたはプレースホルダーのid 文字列を 2 番目のパラメーターとしてコンストラクターに提供します。

    var gridLayout = new GridLayout({}, "placeholder");
    
  2. 使用するサブクラス化を介して dijitdgridにします。dijit/_WidgetBasegridLayout.placeAt("placeholder")

    declare([_WidgetBase, Grid, Keyboard, Selection], {});
    
于 2012-06-19T00:50:19.633 に答える