关于.net的自定义控件 一:谈到自定义控件,就不得不说@Register(这玩艺具体怎么翻译我也不知道,只好用E文,嘿嘿)。 1.@Register语法格式: <%@Register tagprefix="tagprefix" Namespace="namespace" Assembly="assembly"%> or <%@Register tagprefix="tagprefix" TagName="tagname" src="pathname"%> 2.属性: tagprefix:把别名和名称空间连接在一起 tagname:把类名和名称空间连接在一起 Namespace:哈哈,顾名思义把名称空间和tagprefix连接在一起 src:用户自定义控件的路径 Assembly:我们与tagprefix联系的名称 注:Assembly的名称不能包含已存在的文件名 (E文好的可看随机文档) 二:自定义控件的建立(.ascx) .net的自定义控件和asp里的.inc文件非常相似(包括功能也是),我们可以在里面使用html,更可以 连接数据库等等,哎我怎么越说越不明白,还是看看例子吧: 第一个例子只是html文件: Header.ascx <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tr> <td colspan="2" background="images/grid_background.gif" nowrap> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tr> <td colspan="2"> <img src=http://cfan.net.cn/info/"images/most_secretive_place.gif"> </td> <td align="right" nowrap> <table cellpadding="0" cellspacing="0" border="0"> <tr valign="top"> <td align="center" width="65"> <a href="Login.aspx" class="SiteLinkBold"><img src=http://cfan.net.cn/info/"images/sign_in.gif" border="0"> Sign In</a> </td> <td align="center" width="75"> <a href="OrderList.aspx" class="SiteLinkBold"><img src=http://cfan.net.cn/info/"images/account.gif" border="0"> Account</a> </td> <td align="center" width="55"> <a href="ShoppingCart.aspx" class="SiteLinkBold"><img src=http://cfan.net.cn/info/"images/cart.gif" border="0"> Cart</a> </td> <td align="center" width="65"> <a href="InstantOrder.asmx" class="SiteLinkBold"><img src=http://cfan.net.cn/info/"images/services.gif" border="0"> Services</a> </td> <tr>
</td> <td width="10"> </td> </tr>
</td> </tr> <tr> <td colspan="2" nowrap> <form method="post" action="SearchResults.aspx" id="frmSearch" name="frmSearch"> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tr bgcolor="#9D0000"> <td background="images/modernliving_bkgrd.gif"> <img align="left" src=http://cfan.net.cn/info/"images/modernliving.gif"> </td> <td width="94" align="right" bgcolor="#9D0000"> <img src=http://cfan.net.cn/info/"images/search.gif"> </td> <td width="120" align="right" bgcolor="#9D0000"> <input type="text" name="txtSearch" ID="txtSearch" SIZE="20"> </td> <td align="left" bgcolor="#9D0000"> <input type="image" src=http://cfan.net.cn/info/"images/arrowbutton.gif" border="0" id="image1" name="image1"> </td> </tr>
</form> </td> </tr>
这里没什么可说的,大家都非常熟. 第二个例子(和上一个当然不一样了!): Menu.ascx <%@ Control Language="C#" %> <%@ Import Namespace="System.Data.SqlClient" %>
<script runat="server">
//******************************************************* // // The Page_Load event on this page is used to obtain // from a database a list of all product categories // and databind it to an asp:datalist control. // // To optimize performance, this user control is output // cached (varying based on the categoryId and selection // passed through the querystring. // //*******************************************************
void Page_Load(Object sender, EventArgs e) { // Set the curent selection of list String selectionId = Request.Params["selection"];
if (selectionId != null) { MyList.SelectedIndex = Int32.Parse(selectionId); }
// Obtain list of menu categories and databind to list control IBuySpy.ProductsDB products = new IBuySpy.ProductsDB();
MyList.DataSource = products.GetProductCategories(); MyList.DataBind(); }
</script>
<table cellspacing="0" cellpadding="0" width="145" border="0"> <tr valign="top"> <td colspan="2"> <a href="default.aspx"><img src=http://cfan.net.cn/info/"images/logo.gif" border="0"></a> </td> </tr> <tr valign="top"> <td colspan="2"> <asp:DataList id="MyList" runat="server" cellpadding="3" cellspacing="0" width="145" SelectedItemStyle-BackColor="dimgray" EnableViewState="false"> <ItemTemplate> <asp:HyperLink class="MenuUnselected" id="HyperLink1" Text='<%# DataBinder.Eval(Container.DataItem, "CategoryName") %>' NavigateUrl='<%# "productslist.aspx?CategoryID=" + DataBinder.Eval(Container.DataItem, "CategoryID") + "&selection=" + Container.ItemIndex %>' runat="server" /> </ItemTemplate> <SelectedItemTemplate> <asp:HyperLink class="MenuSelected" id="HyperLink2" Text='<%# DataBinder.Eval(Container.DataItem, "CategoryName") %>' NavigateUrl='<%# "productslist.aspx?CategoryID=" + DataBinder.Eval(Container.DataItem, "CategoryID") + "&selection=" + Container.ItemIndex %>' runat="server" /> </SelectedItemTemplate> </asp:DataList> </td> </tr> <tr> <td width="10"> </td> <td> <br><br><br><br><br><br> <a href="docs/docs.htm" target="_blank" class="SiteLink">IBuySpy Store<br>Documentation</a> </td> </tr>
三:我们建好了两个.ascx文件,也就我们自己的控件,那怎么用呢? 看下面: default.aspx <%@ Page Language="C#" %> <%@ Register TagPrefix="IBuySpy" TagName="Menu" Src="_Menu.ascx" %> <%@ Register TagPrefix="IBuySpy" TagName="Header" Src="_Header.ascx" %> <script runat="server">
//******************************************************* // // The Page_Load event on this page is used to personalize // the welcome message seen by returning IBuySpy users. // It does this by retrieving a client-side cookie // (persisted on the client in the Login.aspx and // register.aspx pages) and updating a label control. // //*******************************************************
void Page_Load(Object sender, EventArgs e) {
// Customize welcome message if personalization cookie is present if (Request.Cookies["IBuySpy_FullName"] != null) { WelcomeMsg.Text = "Welcome " + Request.Cookies["IBuySpy_FullName"].Value; } }
</script> <html> <head> <link rel="stylesheet" type="text/css" href="IBuySpy.css"> </head> <body background="images/sitebkgrdnogray.gif" leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" marginheight="0" marginwidth="0"> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tr> <td colspan="2"> <IBuySpy:Header ID="Header1" runat="server" /> </td> </tr> <tr> <td valign="top" width=145> <IBuySpy:Menu id="Menu1" runat="server" /> <img height="1" src=http://cfan.net.cn/info/"images/1x1.gif" width="145"> </td> <td align="left" valign="top" width="*" nowrap> <table height="100%" align="left" cellspacing="0" cellpadding="0" width="100%" border="0"> <tr valign="top"> <td nowrap> <br> <img align="left" width="24" SRC=http://cfan.net.cn/info/"images/1x1.gif"> <table cellspacing="0" cellpadding="0" width="100%"> <tr> <td> <table cellspacing="0" cellpadding="0" width="100%"> <tr> <td class="HomeHead"> <asp:Label id="WelcomeMsg" runat="server">Welcome to IBuySpy.com</asp:Label> </td> </tr>
</td> </tr>
</td> </tr>
</td> </tr>
</body> </html>
本鸟是边学边看,不足之处请大虾指点(jiabaoxu@china.com),谢谢!! CNet 2000.7.30
|