2017-03-09 80 views
1

我正在使用dxDataGrid devextreme(jquery)。 我有一個主顯示網格,顯示每個國家的國家和城市名單。 當我添加一個國家的工作。但是當我點擊添加按鈕城市時,我在控制檯中收到錯誤,無法添加。問題添加到dxDatagrid

我的問題在哪裏?

$(function() { 
    $("#gridCountry").dxDataGrid({ 
     dataSource: { 
      store: { 
       type: "array", 
       key: "ID", 
       data: countries 
      } 
     }, 
     columns: [{ 
      dataField: "CountryLatinName", 
      caption: "Country Name(Latin)" 
     }], 
     editing: { 
      mode: "form", 
      allowUpdating: true, 
      allowDeleting: true, 
      allowAdding: true 
     }, 
     masterDetail: { 
      enabled: true, 
      template: function (container, options) { 
       var country = options.data; 
       container.addClass("internal-grid-container"); 
       $("<div>").text(country.CountryLatinName).appendTo(container); 
       $("<div>") 
        .addClass("internal-grid") 
        .dxDataGrid({ 
         editing: { 
          mode: "form", 
          allowUpdating: true, 
          allowDeleting: true, 
          allowAdding: true 
         }, 
         columnAutoWidth: true, 
         columns: [{ 
          dataField: "CityLatinName", 
          caption:"City Name(Latin)" 
         }, { 
          dataField: "GMT", 
          dataType:"number" 
         }, { 
          dataField:"Capital", 
          dataType: "boolean" 
         }], 
         dataSource: country.Cities 
        }).appendTo(container); 
      } 
     } 
    }); 
}); 

這是我的錯誤:Uncaught TypeError: Cannot read property '0' of undefined,這是國家的數組:

var countries = [{ 
    "ID": 3, 
    "CountryLatinName": "Turkey", 
    "PhonePrefixes":"+90", 
    "Cities": [{ 
     "ID": 30, 
     "CityLatinName": "Ankara", 
     "GMT": "+3:00", 
     "Capital": true 
    }, { 
     "ID": 31, 
     "CityLatinName": "Istanbul", 
     "GMT": "+3:00", 
     "Capital": false 
    }, { 
     "ID": 32, 
     "CityLatinName": "Bodrum", 
     "GMT": "+3:00", 
     "Capital": false 
    }, { 
     "ID": 33, 
     "CityLatinName": "Izmir", 
     "GMT": "+3:00", 
     "Capital": false 
    }] 
}]; 
+0

你究竟得到了什麼錯誤?你能提供一個「國家」陣列嗎? – Sergey

+1

https://jsfiddle.net/3ykswncc/3/ – leman17

回答

1

當您創建一個新的國家的Cities陣列丟失。那麼,你可以使用rowInserting事件解決它:

onRowInserting: function(e) { 
    e.data.Cities = []; 
} 

的例子是here