庖丁解牛Asp.net3.5控件和组件开发技术系列—页面状态机制(四)

6.6 清除页面状态

在控件开发时,有时候需要清除子控件的页面状态,比如在创建子控件时,以下是一个在数据绑定时清除视图并创建子控件的应用场景:

/// <summary>
/// 获得本书更多内容,请看:
/// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx
/// </summary>
public override void DataBind()
{
   base.OnDataBinding(EventArgs.Empty);
   Controls.Clear();
   ClearChildViewState(); //清理视图状态 
   TrackViewState();
   CreateControlHierarchy(true);
   ChildControlsCreated = true;
}

本节介绍几个清理页面状态的方法,主要由Control基类提供。

1.HasChildViewState方法

获取一个值,该值指示当前服务器控件的子控件是否具有任何已保存的视图状态设置。如果有任何子控件具有已保存的视图状态信息,则返回true;否则返回false。

2.IsChildControlStateCleared方法

获取一个值,该值指示当前控件中包含的控件是否具有控件状态。如果该控件的子级不使用控件状态,则返回true;否则返回false。

3.ClearChildState方法

同时清除子控件的视图状态和控件状态。其方法体如下:

protected void ClearChildState()
{
   this.ClearChildControlState();
   this.ClearChildViewState();
}
4.ClearChildControlState方法 
清除控件状态。其代码如下:
protected void ClearChildControlState()
{
   if (this.ControlState >= ControlState.Initialized)
   {
     this.flags.Set(0x40000);
     if (this.Page != null)
     {
       this.Page.RegisterRequiresClearChildControlState(this);
     }
   }
}

时间: 2024-11-08 19:10:33

庖丁解牛Asp.net3.5控件和组件开发技术系列—页面状态机制(四)的相关文章

庖丁解牛Asp.net3.5控件和组件开发技术系列—事件和数据回发机制(三)

5.3.3 复合控件的事件处理 复合控件的事件处理按实现功能可分为三种: (1)复合控件中子控件的内部事件处理. (2)包含处理机制 -- 子控件事件中调用主控件委托的事件实例. (3)冒泡处理机制. 接下来的三节就分别说明这三种事件处理方式机制是如何实现的. 5.3.3.1 复合控件中子控件的内部事件处理 这是最简单的处理方式.复合控件中的子控件事件是单独存在的,与主控件没有任何关系,并且它们各自完成自己的功能,使用方法也很简单,就像以往直接在页面中使用事件一样. 这一节主要以Calculat

Asp.net 3.5控件和组件开发技术系列—服务器控件属性(四)

然后定义一个编辑器,其实所有这些的编辑器功能相当于一个"桥接器",使属性与自定义 Form 窗体关联起来.代码如下: /// <summary> /// 获得本书更多内容,请看: /// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx /// </summary> public class CalculatorSelectEditor : System.Drawing.Design.U

Asp.net 3.5控件和组件开发技术系列—服务器控件属性(三)

4.5.2.2 定制模态属性编辑器 这一节我们学习定制另一种属性编辑器:模态编辑器,在此编辑器中单击一个按钮将弹出一个 窗体,从窗体选择数据后会把值返回到属性窗口中.最重要的一点是我们可以自定义此选择数据的 模态窗口内容,比上面的集合编辑器更灵活.还是先看一下效果图,如图4-20 所示. 开发技术系列-服务器控件属性(三)-"> 图4-20 模态属性编辑器 上图是以一个表示选择食品(水果/ 肉类/ 蔬菜等)的属性为例而定制的一个模态选择窗口, 单击属性旁边的"- "按钮

Asp.net 3.5控件和组件开发技术系列—服务器控件属性(一)

本章内容 4.1 控件属性的作用 4.2 简单属性 4.3 属性的设计时特性 4.4 复杂属性 4.5 深入研究--定制自己的属性编辑器 4.6 类型转换器 4.7 实现自定义属性 4.1 控件属性的作用 开发技术系列-服务器控件属性(一)-"> 属性.方法和事件是控件使用者与控件交互的接口.本节主要介绍控件属性.属性分为系统属 性和自定义的属性.

Asp.net 3.5控件和组件开发技术系列—服务器控件开发中的调试技术

本章内容 2.1 预置代码示例 2.2 调试页面服务端代码 2.3 服务器控件的调试 2.4 JavaScript 脚本调试方法 2.5 Ajax Library 对JavaScript调试支持 2.1 预置代码示例 熟悉ASP.NET 开发的读者朋友可能对于服务器控件的调试技术更容易上手,不过如果您刚刚接 触ASP.NET 也没关系,本章会从最基本的调试开始讲解. 在调试之前,要先建立一个调试控件的项目环境.关于如何建立环境在这里就不讲了,第1 章 已经讲得非常详细了. 首先在Web 控件项目

Asp.net 3.5控件和组件开发技术系列—从零开始开发服务器控件(下)

TextBoxHeight属性主要用来设置显示值的子控件TextBox的高度.与LabelHeight功能相似. /// <summary> /// 获得本书更多内容,请看: /// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx /// </summary> private Unit unitTextBoxHeight = Unit.Empty; [Category("LabelTextBox

Asp.net 3.5控件和组件开发技术系列—服务器控件属性(五)

4.7 实现自定义属性 在本章前面的章节中我们实现的许多功能都是借助于系统提供的设计时元数据属性支持实现的 ,如: 显示属性描述信息的Description 属性 [Description("描述文本")] 指定属性在属性窗口中类别的Category 设计属性 [Category(" 属性窗口中的类别名称")] 指定属性编辑器的Editor 设计属性 [Editor(typeof(FileNameEditor), typeof(UITypeEditor))] 指定属

Asp.net 3.5控件和组件开发技术系列—服务器控件属性(二)

4.4.3.2 使用ControlBuilder解析 复杂内容 通过 System.Web.UI.ControlBuilder 类定制页面解析逻辑,可以定制任意类型的标记,而不 像重写AddParseSubObject 方法那样限定子标记必须是子控件,且必须有前缀和runat 属性,下面 直接通过一个例子来说明一下此类的用法. 首先建立两个文件 ScriptItem.cs 和ScriptItemCollection.cs ,分别定义ScriptItem 类和 ScriptItemCollecti

探讨微软ASP.NET AJAX控件开发技术(客户端)

本系列文章将通过具体的实例从客户端和服务端两个角度全面探讨ASP.NET AJAX框架中的控件(Control)开发所涉及的技术. 一. 简介 如今,ASP.NET AJAX框架以其与ASP.NET 2.0系统的有机整合与完全面向对象的客户端JavaScript组件模型正在吸引着越来越多的Web开发人员.此外,这个框架还为基于ASP.NET 2.0平台的AJAX Web开发提供了一揽子方案(尽管尚嫌稚气). 首先,我们来回忆ASP.NET AJAX框架设计的主要目标:其一,扩展现有的ASP.NE