Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)aaa
published in(发表于) 2013/12/17 7:46:43
使用Control,Adapters优化Asp.net控件_.net资料_编程技术

使用Control Adapters优化Asp.net控件_.net资料_编程技术-你的首页-uuhomepage.com

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


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







默认状态下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文件,添加如下内容





adapterType="RadioButtonListAdapter" />
adapterType="RadioButtonListAdapter" />



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





If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759