快速业务通道

ASP.NET控件开发基础(10)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
输出集合属性
      foreach (DropItem item in dropItemList)
      {
        DropItem dr = item as DropItem;
        if (dropItemList != null && dropItemList.Count > 0)
        {
        //颜色转换
        WebColorConverter wcc = new WebColorConverter();
        writer.AddAttribute(HtmlTextWriterAttribute.Value, dr.Value.ToString());
        writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, wcc.ConvertToString(dr.BackColor));
        writer.RenderBeginTag(HtmlTextWriterTag.Option);
        writer.Write(dr.Text.ToString());
        writer.RenderEndTag();
        }
      }
      base.RenderContents(writer);
    }
   }

上面代码注意颜色类型之间的转换,以下为HTML代码

<custom:DropColor ID="DropColor1" runat="server" ForeColor="White">
     <custom:DropItem BackColor="Yellow" Text="黄色" Value="yellow" />
     <custom:DropItem BackColor="Red" Text="红色" Value="red" />
     <custom:DropItem BackColor="Blue" Text="蓝色" Value="blue" />
     <custom:DropItem BackColor="Green" Text="绿色" Value="green" />
     <custom:DropItem BackColor="Black" Text="黑色" Value="Black" />
     </custom:DropColor>

输出以后的效果如下图

ASP.NET控件开发基础(10)

效果还不错吧,而且挺实用的.

2.定义编辑器

大家一般在添加集合属性的时候往往会在.net自带的编辑器中添加数据,这样可以提高效果,不用在HTML视图添加数据.如下图

ASP.NET控件开发基础(10)

我们也可以为其添加自定义的编辑器,其实我们一直在用.net自带的编辑器,我们称之为 UI编辑器或视图编辑器,如颜色,时间,超级链接等,大家该有所体会

其编辑器的基类为位于System.Drawing.Design命名空间的UITypeEditor,很多UI编辑器都从此类派生,有兴趣的可以去了解下这个类.

你们如何使用使用UI编辑器呢?也跟上一篇讲的类型转换器一样,你先要定义一个UI编辑器,然后与相关属性关联起来.

因为所定义的是一个集合类,而.net已经为我们提供了一个集合编辑器的CollectionEditor类,其已经为我们做了很多工作了,我们最简单的只需重写几个方法即可.具体其他属性和方法请参考MSDN,如下代码

public class DropItemEditor : CollectionEditor
   {
     public DropItemEditor(Type type)
       : base(type)
     {
     }
     //一次可否选择多项
     protected override bool CanSelectMultipleInstances()
     {
       return false;
     }

     //获取此集合包含的数据类型
     protected override Type CreateCollectionItemType()
     {
       return typeof(DropItem);
     }
   }

然后把集合属性与编辑器关联起来,添加了一个EditorAttribute,第一个参数为指定的编辑器类型,第二个为基本类型

[
     Category("Behavior"),
     Description("项集合"),
     DesignerSerializationVisibility(
       DesignerSerializationVisibility.Content),
     PersistenceMode(PersistenceMode.InnerDefaultProperty),
     Editor(typeo

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号