|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
简单的说:.net只有微软一家在做的,微软也不允许别人跟他做相同的工具,所以他就把需要的工具全部封装在.net的平台上了;而java是公开了。在上一章中我们解说了怎样在用户控件中增加复杂属性与列举属性,链接以下:
在Asp.net中为用户控件(.ascx)增加自界说属性详解
这一章我们解说怎样为Asp.Net的用户控件增加相似DropDownList的下拉属性,以下图所示:
从图片中能够看到,WebUserControl1控件是一个用户控件,但它却能够像DropDownList控件一样,在aspx源码中设置下拉汇合项。这是怎样完成的呢?
为了节俭工夫,我们就不像上一章说的那末具体了。
起首我们新建一个WebUserControl1.ascx用户控件,为了复杂,我们就间接在该控件中放一个DropDownList控件。假如我们不为WebUserControl1.ascx控件增加任何属性,在该控件外是不克不及够为DropDownList控件增加下拉项的。
如今我们为WebUserControl1.ascx控件增加一个Items属性,它间接映照DropDownList的Items属性,属性以下:
publicListItemCollectionItems
{
get{returnthis.DropDownList1.Items;}
}
如许,我们在挪用该用户控件的aspx页的cs文件中,就能够经由过程编程的体例为DropDownList控件增加下拉项了,以下:
protectedvoidPage_Load(objectsender,EventArgse)
{
this.WebUserControl11.Items.Add(newListItem("中国银行","0"));
}
但这时候我还没法在aspx间接为DropDownList控件增加下拉项的。
如今我们为用户控件的Items属性增加一个属性,以下代码:
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
publicListItemCollectionItems
{
get{returnthis.DropDownList1.Items;}
}
解说一下下面代码的意义:
PersistenceMode:界说元数据属性(Attribute),用于指定怎样在计划时将ASP.NET服务器控件属性(Property)或事务保留到ASP.NET页
PersistenceMode.InnerDefaultProperty:指定属性在ASP.NET服务器控件中坚持为外部文本。还唆使将该属性界说为元素的默许属性。只能指定一个属性为默许属性
仅仅设置了这个属性,仍是不敷的,我们还必要为用户控件类增加一个属性:
[ParseChildren(true,"Items")]
publicpartialclassWebUserControl1:System.Web.UI.UserControl
{
}
ParseChildren:界说可在开辟ASP.NET服务器控件时利用的元数据属性。利用System.Web.UI.ParseChildrenAttribute类唆使页剖析器应怎样处置页上声明的服务器控件标志中嵌套的内容。
好了,设置完这两步,从头编译用户控件,然后再从头翻开挪用该用户控件的页面,是否是能够在aspx页面间接设置下拉汇合项了呢:)
示例控件的全体源码以下:
ascx:
<%@ControlLanguage="C#"AutoEventWireup="true"CodeBehind="WebUserControl1.ascx.cs"
Inherits="WebApplication1.WebUserControl1"%>
<asp:DropDownListID="DropDownList1"runat="server">
</asp:DropDownList>
ascx.cs:
usingSystem;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
namespaceWebApplication1
{
[ParseChildren(true,"Items")]
publicpartialclassWebUserControl1:System.Web.UI.UserControl
{
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
publicListItemCollectionItems
{
get{returnthis.DropDownList1.Items;}
}
protectedvoidPage_Load(objectsender,EventArgse)
{
}
}
}
我以前很喜欢Serv-U,自从它用Java重写之后我就再也没用过,实在是太慢了,我宁可用IIS搭建FTP,虽然IIS搭建FTP在权限管理上很不灵活。 |
|