熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET中Control基類清理頁面狀態

2013-11-13 10:41:28  來源: .NET編程 

  控件開發時有時候需要清除子控件的頁面狀態比如在創建子控件時以下是一個在數據綁定時清除視圖並創建子控件的應用場景

  public override void DataBind()
{
    baseOnDataBinding(EventArgsEmpty);
    ControlsClear();
    ClearChildViewState(); //清理視圖狀態
    TrackViewState();
    CreateControlHierarchy(true);
    ChildControlsCreated = true;
}

  本節介紹幾個清理頁面狀態的方法主要由Control基類提供

  .HasChildViewState方法

  獲取一個值該值指示當前服務器控件的子控件是否具有任何已保存的視圖狀態設置如果有任何子控件具有已保存的視圖狀態信息則返回true否則返回false

  .IsChildControlStateCleared方法

  獲取一個值該值指示當前控件中包含的控件是否具有控件狀態如果該控件的子級不使用控件狀態則返回true否則返回false

  .ClearChildState方法

  同時清除子控件的視圖狀態和控件狀態其方法體如下

  protected void ClearChildState()
{
    thisClearChildControlState();
    thisClearChildViewState();
}

  .ClearChildControlState方法

  清除控件狀態其代碼如下

  protected void ClearChildControlState()
{
    if (thisControlState >= ControlStateInitialized)
    {
        thisflagsSet(x);
        if (thisPage != null)
        {
            thisPageRegisterRequiresClearChildControlState(this);
        }
    }
}

  控件狀態是通過方法

  PageRegisterRequiresControlState(this);

  將控件注冊為具有持久性控件狀態的控件同時也要調用方法

  thisPageRegisterRequiresClearChildControlState(this);

  清除控件狀態不同的是此方法是內部方法不供開發人員調用只能通過ClearChild ControlState方法間接調用

  .ClearChildViewState方法

  此方法主要清除子控件的視圖狀態其代碼結構如下

  protected void ClearChildViewState()
{
    if (this_occasionalFields != null)
    {
        this_occasionalFieldsControlsViewState = null;
    }
}

  方法體中設置控件視圖狀態的IDictionary對象ControlsViewState為null


From:http://tw.wingwit.com/Article/program/net/201311/14306.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.