2012-12-15 61 views
1

我有一個非常標準的WinJS ListView設置綁定到一些分組數據。WinJS ListView Dynamic Grouping

基於應用程序設置,我想更改是否顯示分組。我可以部分做到這一點時,勾選頁面加載並跳過像這樣設置分組屬性:

  if (!Data.getCategoryGrouping()) { 
       var content = element.querySelector(".itemspage"); 
       content.className += " noGroup"; 
       listView.groupHeaderTemplate = null; 
       listView.groupDataSource = null; 
      } 
      else { 
       listView.groupHeaderTemplate = element.querySelector(".headerTemplate"); 
       listView.groupDataSource = Data.groups.dataSource; 
      } 

然而,這並不在的情況下幫助在頁面上已經可見,並且用戶調整設定。 (說實話,可能並不是最好的辦法。)

有什麼想法?

回答

1

頁面加載後,您可以將groupDataSource清空以關閉分組。像這樣...

q("#myButton").onclick = function(e) { 
    myListView.groupDataSource = null; 
}; 

,你可以只是像這樣的按鈕切換它...

q("#myButton").onclick = function(e) { 
    if (myListView.groupDataSource != null) myListView.groupDataSource = null; 
    else { myListView.groupDataSource = myGroupedList.groups.dataSource; } 
}; 

BTW,而不是使用content.className += " noGroup";因爲你在你的代碼做的,我建議你使用content.classList.add("noGroup");

+0

謝謝傑克 - 我改變了classList。 :-)使用groupDataSource,我正在做一個非常類似的事情。我的問題似乎是讓它在頁面已經顯示的時候應用這個改變,然後讓listview正確地響應這個改變。 –

+0

這很奇怪。我經歷了一個小測試,當我這樣做時,你看到ListView刷新了更改(分組,然後沒有分組)。我沒有連接任何ListView事件來刷新它。它發生在它自己身上。 –