1

私は剣道グリッド[ウェブ]を使用しており、グリッドをレンダリングするために次のjsonデータを持っています

{"rowguid":"7e6dfa67-47a2-40fb-b3fb-9d21e9cba1c3","ProductId":100,"名前":"車","色":"#aaaaa","サイズ":4,"コスト": 5.26,"Category":{"CatId":1,"Id":"f27b7d43-9b57-470e-97a3-023323a5a7ac","名前":"車両"},"CategoryName":null},{"rowguid": "9cddd550-479c-4df8-883b-50f39e2b4249","ProductId":101,"名前":"自転車","色":"#aaaab","サイズ":5,"コスト":6.26,"カテゴリー" :{"CatId":1,"Id":"82842c66-223d-4774-a4b4-b748429f5984","Name":"2Wheeler"},"CategoryName":null},{"rowguid":"1a47a67f-ddff- 401b-adee-b3bb27660e44","製品 ID":102,"Name":"plane","Color":"#aaaac","size":6,"Cost":7.26,"Category":{"CatId":1,"Id":"f5bd0e35-9ff4 -4a09-8b2b-a1f9c28fb60e","名前":"航空機"},"カテゴリ名":null}]

このグリッドからわかるように、このデータソースは、使用される name プロパティを持つ別のオブジェクトである category と呼ばれる内部プロパティを持つ製品モデルです。

次のスキーマを使用しました

  schema: {
            model: {
                id: "rowguid",
                fields: {
                    rowguid: { editable: false, nullable: true },
                    ProductId: { editable: true, nullable: true },
                    Name: { validation: { required: true} },
                    Color: { type: "string", validation: { required: true, min: 1} },
                    size: { type: "number", validation: { min: 1, required: true} },
                    Cost: { type: "number", validation: { min: 1, required: true }, format: "{0:n2}" }
                    ,CategoryName: {field:"Category.Name", type: "string", validation: { required: true }}
                }
            }
        }

および次の列宣言

  columns: [
            {field:"rowguid",tite:"Unique Id"},
            {field:"ProductId",tite:"Id"},
            {field:"Name",tite:"Name"},
            {field:"Color",tite:"Color", template:colorColumnTemplate},
            {field:"size",tite:"size",type:"number", format: "{0:n2}"},
            {field:"Cost",tite:"Cost",type:"number", format: "{0:n2}"},
            //{field:"CategoryName",title:"Category Name",editor:categoryEditor,template: "#=CategoryName#" },
            {field:"Category.Name",title:"Category Name",editor:categoryEditor},
            { command: { text: "Actions" }, title: "Action", width: "140px" },
            {command: ["edit"], title: "Actions", width: "172px"}
            ],            

ここでは、グリッドが正常に表示され、編集、更新がすべて正常に機能します。

問題は、「新しいレコードを追加」ボタンをクリックすると、次のエラーが発生することです

Uncaught TypeError: Cannot read property 'Name' of undefined

これは、剣道モデルが形成されているときに、値を次のように読み取ろうとするためです。

javascript オブジェクト プロパティevents[idx].call(that, e);は、剣道グリッドに新しい行を追加したときに発生するトリガー イベントのメソッドです。

Category.Name を使用して新しいレコードを追加する方法はありますか。新しい行の追加プロセス中にテンプレートをグリッド行に添付または関連付けることができれば可能になると思います。

可能かどうか教えてください。

4

1 に答える 1