设为首页 友情链接
在线留言 发表文章
加入收藏 广告联系

刺猬首页

| 专案技术 | 网络技术 | 图形图象 | 网络编程 | 网页设计 | 操作系统 | 服务器 | 技术白皮书 | 在线实验室 | 刺猬论坛 |
小说专版  | 数据库 | 设计赏析 | 存储频道 | 网络安全 | 私服架设 |  Solaris | 网站评估 | PC维护技巧 | 下载中心 | 博 客 |
专   题: | Linux | java | cisco | 防病毒 | 刀片 | SOA | iscsi | ASP.NET | SQL | Oracle |
您现在的位置: 刺猬宫 >> 网络编程 >> ASP.NET >> 教程正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
应用实例:ASP.Net中利用…
使用c#捕获windows的关机…
使用javascript来实…
新手入门:javascri…
网页制作技巧文章之用CS…
网页标准研究:用CSS实现…
小技巧:用CSS如何实现单…
网页标准学习:利用CSS同…
DIV CSS网页布局技巧:b…
CSS学习教程:认识会用C…
  使用Control Adapters优化Asp.net控件           
使用Control Adapters优化Asp.net控件
 

有些时候Asp.net 控件默认状态下生成的html代码,不能满足一些特定的需要。比如

我们想让用户做一些选择,可以很容易的用如下代码实现

<asp:CheckBoxList runat="server">
   <asp:ListItem Text="One" />
   <asp:ListItem Text="Two" />
   <asp:ListItem Text="Three" />
</asp:CheckBoxList>

默认状态下CheckBoxList会将这些选项放在一个table标签里,但是也许有个别情况不适合使用table,而需要一个un-ordered list(ul)。当然我们可以重新写一个继承于CheckBoxList的控件,但是使用Control Adpater会更容易,并且还有一些额外的好处。

首先看一下实现:

1, 写一个继承自WebControlAdapter的类,如下

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.Adapters;
public class RadioButtonListAdapter : WebControlAdapter
{
   protected override void Render(HtmlTextWriter writer)
   {
       ListControl targetControl = this.Control as ListControl;
       // If the control that this adapter is pointing to is not
       // a ListControl (RadioButtonList or CheckBoxList) then
       // we don't want to change the rendering.
       if (targetControl == null || targetControl is IRepeatInfoUser == false)
       {
base.Render(writer);
           return;
       }
       writer.WriteBeginTag("ul");
       if (targetControl.CssClass.Length > 0)
       {
         writer.WriteAttribute("class", targetControl.CssClass);
       }
       writer.Write(">");
       IRepeatInfoUser repeaterInfo = (IRepeatInfoUser)this.Control;
      for (int i = 0; i < targetControl.Items.Count; i++)
       {
           writer.WriteFullBeginTag("li");
           repeaterInfo.RenderItem(ListItemType.Item, i, new RepeatInfo(), writer);
           writer.WriteEndTag("li");
       }
       writer.WriteEndTag("ul");
   }
}

2,新建一个asp.net 文件夹 App_Browsers,在其中添加一个.browser文件,添加如下内容

<browsers>
<browser refID="Default">
       <controlAdapters>
           <adapter controlType="System.Web.UI.WebControls.CheckBoxList"
              adapterType="RadioButtonListAdapter" />
           <adapter controlType="System.Web.UI.WebControls.RadioButtonList"
              adapterType="RadioButtonListAdapter" />
       </controlAdapters>
   </browser>
</browsers>

好了,一切ok。注意到了没有?我们并没有改变先前的asp.net代码.这就是个非常重要的好处啊。

频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。

原始作者:佚名 录入时间:2007-6-20 17:17:04
信息来源:不详 投稿信箱:itqoo@126.com
教程录入:itqoo    责任编辑:itqoo 
  • 上一个教程:

  • 下一个教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    - 关于我们 - 合作伙伴 - 友情链接 - 广告刊登 - 投稿热线 - 在线留言版权声明联系方式 -
    IT公社版权所有 粤ICP备05127012号
    Copyrigh@2005-2006 itqoo.com.Inc All Rights Reserved  推荐分辨率 1024*768
    联系站长:E-Mail:itqoo@126.com     MSN:urchincc@hotmail.com    QQ:点击这里给我发消息
    特别感谢:亿太网络提供空间支持