当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  ASP.NET 2.0服务器控件之复合控件样式1

 ASP.NET 2.0服务器控件之复合控件样式1

点击次数:39 次 发布日期:2008-11-26 12:18:44 作者:源代码网
源代码网推荐      为了设置复合控件的外观,复合控件必须提供一些样式属性,尤其是针对子控件的样式属性。在本文中,我们将重点介绍为复合控件实现样式属性的两种方法。
源代码网推荐  
源代码网推荐    1、上传部分样式属性
源代码网推荐  
源代码网推荐    在为复合控件实现样式属性之前,读者应首先了解"样式冒泡"的基本概念。样式冒泡多用于实现复合控件的样式属性。由于在复合控件中包含多个子控件,因此,这些子控件的样式属性可能在一定情况下,干扰复合控件的样式属性,引起样式属性混乱。为了更加明确的定义复合控件的样式属性,可以采取将子控件的样式属性上传为顶级样式属性的方法,这就是所谓的"样式冒泡"。
源代码网推荐  
源代码网推荐    通常情况下,开发人员可能面对两种情况:一种是上传子控件中少数样式属性,另一种是上传子控件中所有样式属性。本小节只介绍针对第一种情况的实现方法,而另外一种将在后面一节中进行讲解。
源代码网推荐  
源代码网推荐    本节说明的这种实现样式属性的方法,其关键是通过为子控件的Attributes指定键/值对,引入样式属性,由此将子控件的样式属性上传为复合控件顶级属性。为了方便读者理解这一方法,下面列举了一个典型应用。
源代码网推荐  
源代码网推荐    在本示例中,实现了一个复合控件MyControl,其子控件集合中包括一个Table控件。当前,需要将Table子控件的样式属性CellPadding和Border上传为MyControl的顶级样式属性。具体源代码如下所示。
源代码网推荐  
源代码网推荐  public class MyControl : CompositeControl{
源代码网推荐   // 相关代码 ......
源代码网推荐   // 定义初始值
源代码网推荐  
源代码网推荐   private int _cellPadding = 0;
源代码网推荐   private int _border = 1;
源代码网推荐   ......
源代码网推荐   // 定义样式属性,它和Table控件的样式属性CellPadding和Border类似
源代码网推荐   public int CellPadding{
源代码网推荐    get { return _cellPadding; }
源代码网推荐    set { _cellPadding = value; }
源代码网推荐    // 实现属性Border
源代码网推荐    public int Border{
源代码网推荐     get { return _border; }
源代码网推荐     set { _border = value; }
源代码网推荐     ......
源代码网推荐     // 重写CreateChildControls方法
源代码网推荐     protected override void CreateChildControls() {
源代码网推荐      //相关代码
源代码网推荐      ......
源代码网推荐      Table t = new Table(); //将前面定义的属性添加到键/值对中   
源代码网推荐      t.AddAttributes.Add("CellPadding",_cellPadding.ToString());
源代码网推荐      t.AddAttributes.Add("Border",_border.ToString());
源代码网推荐      ......
源代码网推荐     }
源代码网推荐   }
源代码网推荐  
源代码网推荐    以上代码显示了MyControl的一些关键源代码,其重点在于说明实现部分样式属性冒泡的关键步骤。(1)初始化顶级样式属性的字段,如果有必要可以定义初始值。(2)定义与需要升级的子控件的样式属性相同名称的属性。上面的代码中定义了属性CellPadding和Border。(3)在子控件的Attributes的键/值对中引入第2步中定义的属性。
源代码网推荐  
源代码网推荐    当设置MyControl中的样式属性CellPadding和Border的属性值时,实际是设置Table子控件的CellPadding和Border的属性值。通过以上3个关键步骤就可实现样式冒泡。
源代码网推荐  
源代码网推荐    如果读者仔细观察可以发现,以上介绍的这种实现样式冒泡的方法存在一些问题:一、这种方法只适用于升级子控件中少数样式属性。如果需要将子控件的所有样式属性都升级,而仍然使用这种方法,则实现起来非常繁琐,容易产生错误。二、所实现的样式属性缺乏逻辑性和组织性。在某种情况下,例如,多个子控件的同一样式属性都需要升级为顶级属性,这时使用该方法将会引起混乱。
源代码网推荐  
源代码网推荐    为了解决这些问题,下面介绍一种上传子控件全部样式属性的实现方法。
源代码网推荐  
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华