[ASP.NET][Telerik] 如何 使用 RadPersistenceManager 和 RadPersistenceManagerProxy 記錄控制項設定

[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 記下來,這裡有支援的控制項以及紀錄的屬性

http://docs.telerik.com/devtools/aspnet-ajax/controls/persistenceframework/getting-started/supported-controls

 

RadPersistenceManager 成員

image

 

使用方式很簡單

@.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

Image result for microsoft+mvp+logo