在我的網絡應用程序中,我有2個網格。第二個綁定到第一個網格selectedItems,這是工作正常。問題是我想獲得第二個網格中的元素列表(理想情況下,應用於數據中反映的第二個列表中的任何排序),以便我可以將更改提交到數據庫。如何從網格獲得當前數據
所以,問題是我怎麼能訪問第二網格中的數據,如果我嘗試:
surveyModel.surveySelectedSectionsGrid.data
我回去,我用來設置網格選項字符串它說:
surveyModel.surveySectionGrid.selectedItems
我想要的是用於第二個網格的實際數據模型。
這裏是我的兩個網格選項定義:
surveySectionGrid: {
data: 'surveyModel.surveySections',
multiSelect:true,
selectedItems:[],
showFilter:true,
columnDefs: [
{ field: 'name', displayName: 'Questions/Sections' },
{ field: 'sectionTypeDescription', displayName: 'Section Type' },
{ displayName: 'Edit',
field:'sectionId',
cellTemplate:'<div class="ngCellText" ng-class="col.colIndex()"><span ng-cell-text><button ng-click="gotoEditSection(row.getProperty(col.field))">Edit {{row.getProperty(col.field)}}</button></span></div>'
}
]
},
surveySelectedSectionsGrid: {
data: 'surveyModel.surveySectionGrid.selectedItems',
multiSelect:false,
selectedItems:[],
showFilter:true,
columnDefs: [
{ field: 'name', displayName: 'Selected Sections for Survey' }
]
}
一些可能的想法,我已經遇到
網格的rendereredRows屬性是具有對應於我的原創要素實體對象的數組。在數據中,但基於數組的名稱,它聽起來像是元素不在屏幕上,他們不會出現在這個列表中。
我發現作爲臨時解決方法我可以在我的輔助網格上調用selectAll(true),然後使用selectedItems數組,然後調用selectAll(false),但更直接的解決方案將會很好。
嗨布倫特感謝您的答覆,我擔心的是,電網做「虛擬化」,我相信,如果有超過50個項目,然後他們不是所有的渲染(我在代碼中的某個地方看到了這個數字,以便開始虛擬化)。您是否偶然使用了超過50行的渲染行? – shaunhusain
我沒有(我的用例有<20元素)。 我剛寫了一個plnkr來測試超過50個元素,看起來你是對的 - 通過添加一個調試行來打印出每個行選擇時的$ scope對象,我能夠確認只有16個將50個元素加載到renderedRows對象中。 http://plnkr.co/edit/QD6gIg?p=preview –
@shaunhusain,有點晚了,但[檢查了這一點](http://comments.gmane.org/gmane.comp.lang.javascript.angularjs/ 3778)。似乎有一個選項可以提高虛擬化行數的閾值。默認值爲50,但您可以將GridOptions對象中的virtualizationThreshold變量設置爲您需要的任意數字。看起來它會影響性能,但它可能會使渲染成爲可行的選項。 –