2014-07-11 62 views
0

我一直在做很多的谷歌搜索,但找不到實現這一點的方法。對不起,如果我在搜索中錯過了它。使用DataView時的Slickgrid排序和展開/摺疊

我使用Example 4 adding tree functionality作爲模板,但我一直無法實現列排序,同時樹功能處於活動狀態。

我試過的一切都在我內聯過濾器的渲染版本的一個無限循環中產生,因爲ID不再按順序排列。

有沒有人能夠實現與樹功能排序或有任何指針如何可以完成?有沒有辦法對父行進行排序並將父母和孩子放在一起?

我的過濾器基本上與示例中的過濾器相同,只是對搜索進行了一些微調。

如果因爲父母和孩子不再順序,它會卡住循環item.parent。現在所有的行都有孩子。

全功能:

function openFilter(item) { 

     if (specificColumn != null) { 
      if (searchString != "" && item[specificColumn].toLowerCase().indexOf(searchString) == -1) { 
       return false; 
      } 

     } else { 
      if (searchString != "" 
       && item["accountName"].toLowerCase().indexOf(searchString) == -1 
       && item["solution"].toString().toLowerCase().indexOf(searchString) == -1 
       && item["Adjusted_Commitment__c"].toLowerCase().indexOf(searchString) == -1 
       && item["Deal_Registration_ID__c"].toLowerCase().indexOf(searchString) == -1 
       && item["lineItemValue"].toString().toLowerCase().indexOf(searchString) == -1 
       && item["oppotunityName"].toLowerCase().indexOf(searchString) == -1 
       && item["closeDate"].toLowerCase().indexOf(searchString) == -1 
       && item["productName"].toLowerCase().indexOf(searchString) == -1 
       && item["stageName"].toLowerCase().indexOf(searchString) == -1 
       && item["ownerName"].toLowerCase().indexOf(searchString) == -1 
       && item["accountManagerList"].toLowerCase().indexOf(searchString) == -1 
       && item["accountManagerMgr2"].toLowerCase().indexOf(searchString) == -1 
       && item["ProServicesEngagement"].toLowerCase().indexOf(searchString) == -1 
       && item["proServicesEngagementAll"].toLowerCase().indexOf(searchString) == -1 
       && item["productType"].toLowerCase().indexOf(searchString) == -1 
       && item["commissionableEMName"].toLowerCase().indexOf(searchString) == -1 
       && item["lastUpdated"].toLowerCase().indexOf(searchString) == -1 
       && item["updatedBy"].toLowerCase().indexOf(searchString) == -1) { 
       return false; 
      } 
     } 
     if (item.parent != null) { 
      var parent = oppLineGridData[item.parent]; 

      while (parent) { 
       if (parent._collapsed) { 
        return false; 
       } 

       parent = oppLineGridData[parent.parent]; 
      } 
     } 

     return true; 
    } 

回答

1

唯一的解決辦法是禁用的過濾器的內聯。換句話說,選項inlineFilters應該設置爲false。 我剛剛遭受同樣的問題,我從經驗告訴你。 SlickGrid的內聯過濾器不會處理複雜的代碼。 即使是一個if內部或內部循環也足以讓它進入無限循環。