2015-04-03 57 views
0

默認情況下,Telerik RadGrid(ASP.NET AJAX用戶界面)和Kendo UI網格控件在網格刷新時重置所有組展開/摺疊狀態。 Kendo網格甚至不允許指定默認的展開/摺疊狀態。到目前爲止,我發現的所有解決方案都是不完整的或有問題的。Telerik Kendo和ASP.Net網格:在客戶端保留組展開/摺疊狀態

這就是我正在尋找這不是在網絡上的各種Telerik的和社區的例子完全可用:

  • 寫在打字稿降低實施和編碼錯誤。
  • 在網格數據刷新(客戶端數據源或AJAX,排序等)後維護狀態。
  • 即使子組在多個父組之間具有相同的名稱/值時也保持狀態(跟蹤組的完整路徑,而不僅僅是組名本身)。
  • 自動跟蹤展開狀態和摺疊狀態(默認情況下,網格可以摺疊或展開),並在適當時清除已保存的分組數據以減少內存使用量。
  • 當檢測到狀態變化時保存所有組的狀態,從而覆蓋單點擊事件(例如同時展開/摺疊父母和/或孩子)後可能展開/摺疊多個組的情況。
  • 包含指定默認切換狀態(啓動/第一組應用時)的智能功能,允許在不覆蓋以前的用戶狀態(或在第一次加載時展開/摺疊)的情況下展開/摺疊所有行。
  • 包括ToggleAllGroups方法。
  • 保存異步組狀態以確保UX不會受到負面影響。
  • 網格位置被保存並與特定頁碼相關聯,滾動位置自動直觀調整,滾動動畫。
  • 核心功能可與Kendo UI Grid和ASP.Net Grid配合使用,從而減少那些使用兩個控制集的人的持續維護。

回答

0

我在這個問題上花了一些時間,並開發了一套擴展模塊,可以很好地處理很多網格場景。此解決方案適用於AJAX回發刷新和客戶端數據刷新,並且可與Kendo UI Grid一起使用(請參閱示例和代碼以獲取詳細信息)。

extender類基本上遍歷Grid的DOM(儘可能使用可用的Telerik客戶端API),並將「完整路徑組鍵」保存在數組中。因爲它使用完整路徑來保存/恢復狀態,所以即使數據發生變化,並且在多個父代中存在重複的子組標題時,它也可以工作。沒有依賴於跟蹤服務器上不斷變化的行索引值。這是Kendo UI的100%客戶端功能,主要是ASP.Net RadGrid的客戶端功能(某些數據需要在預渲染中添加到RadGrid組標題元素,因爲其客戶端API缺少一些關鍵方法/數據)。

我不會在這裏發佈代碼,因爲擴展器非常冗長,但它僅用於暴露5種方法。它應該適用於大多數RadGrid和Kendo網格場景。要獲取最新的源代碼,請轉至this GitHub repository。擴展器組織得非常好,所以您應該能夠輕鬆搞定並調整以滿足您的特定需求。