[ASP.NET][Telerik] 如何 使用 RadPersistenceManager 和 RadPersistenceManagerProxy 記錄控制項設定
PersistenceFramework 是 Telerik 用來紀錄控制項設定的一個元件,上篇用 Hard Code 的方式把 RadGrid 的設定記下來 http://www.dotblogs.com.tw/yc421206/archive/2015/08/31/153260.aspx,PersistenceFramework 可以讓我們省掉一些苦工,Master Page 裡使用 RadPersistenceManager,Content Page 則用 RadPersistenceManagerProxy
http://docs.telerik.com/devtools/aspnet-ajax/controls/persistenceframework/overview
並不是所有的控制項都能被 RadPersistenceManager 記下來,這裡有支援的控制項以及紀錄的屬性
RadPersistenceManager 成員
使用方式很簡單
@.aspx
設定要被記下來的 Control ID
RadPersistenceManagerProxy
<PersistenceSettings> <telerik:PersistenceSetting ControlID="Master_RadGrid" /> </PersistenceSettings> </telerik:RadPersistenceManager>
然後在對的時機點,調用 RadPersistenceManager1.SaveState()、 RadPersistenceManager1.LoadState()。
我個人是在 Page_Load 的時候載入狀態,然後再 RadGrid NeedDataSource 的事件最後紀錄狀態
{ if (this.IsPostBack) { return; } RadPersistenceManager1.LoadState(); }
{ .... RadPersistenceManager1.SaveState(); }
如果有 Master Page 有使用 RadPersistenceManager ,那 Content Page 就要用 RadPersistenceManagerProxy,一個頁面就只能有一個 RadPersistenceManager
@.aspx
<PersistenceSettings> <telerik:PersistenceSetting ControlID="Master_RadGrid" /> </PersistenceSettings> </telerik:RadPersistenceManagerProxy>
RadPersistenceManagerProxy 並沒有任何的方法可供我處理狀態,我知道有兩種方式可在 Content Page 調用儲存跟還原
- MasterPage.FindControl,別忘了在 Content Page 要加上<%@ MasterType TypeName="…" %>,範例如下,範例裡面的 FindControl<T> 不是本篇的重點,總之就是 FindControl 就對了
{ get { var manager = this.Master.FindControl<RadPersistenceManager>("RadPersistenceManager1"); manager.StorageProviderKey = "GridState"; return manager; } }
- RadPersistenceManager.GetCurrent(page)
{ get { Page page = HttpContext.Current.CurrentHandler as Page; var manager = RadPersistenceManager.GetCurrent(page); manager.StorageProviderKey = "GridState"; return manager; } }
只要取得 RadPersistenceManager 物件就能處理控制項的設定狀態了
文章出自:http://www.dotblogs.com.tw/yc421206/archive/2015/09/01/153274.aspx
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET