petshop学习笔记(一):自定义标签的使用
2010-02-05 14:33 huayifu 阅读(282) 评论(0) 收藏 举报其实自定义标签,基本上就相当于一个共通的模块,很多页面都会需要,为了达到易用性而单独制作的一个模块。
先看一个例子:
ascx文件:
1 <asp:Repeater ID="rep" runat="server">
2 <HeaderTemplate>
3 <table cellspacing="0" border="0" style="border-collapse: collapse;">
4 </HeaderTemplate>
5 <ItemTemplate>
6 <tr>
7 <td >
8 <asp:HyperLink ID="H1" runat="server" NavigateUrl='<%# string.Format("~/User.aspx?userId={0}", Eval("Id")) %>' Text='<%# Eval("Name") %>' />
9 </td>
10 </tr>
11 </ItemTemplate>
12 <FooterTemplate>
13 </table>
14 </FooterTemplate>
15 </asp:Repeater>
codebehind文件,即ascx.cs文件:
代码
1 using System;
2 using System.Web.UI.WebControls;
3 using System.Data.SqlClient;
4 using System.Web.UI.MobileControls;
5 using System.Collections.Generic;
6
7 namespace Login.Web
8 {
9 public partial class LoginCtrl : System.Web.UI.UserControl
10 {
11
12 protected void Page_Load(object sender, EventArgs e)
13 {
14 GetUser();
15 }
16
17 private void GetUser()
18 {
19
20
21 string strConnection = "user id=sa;password=1234;";
22 strConnection += "initial catalog=TEST;Server=HOST;";
23 strConnection += "Connect Timeout=30";
24
25 SqlConnection cnn = new SqlConnection(strConnection);
26
27 cnn.Open();
28
29 SqlCommand cmd = new SqlCommand();
30
31 cmd.Connection = cnn;
32
33 cmd.CommandText = "SELECT DISTINCT USERID,NM FROM M_USER ";
34
35 SqlDataReader dreader = cmd.ExecuteReader();
36
37
38
39 List<UserInfo> userList = new List<UserInfo>();
40
41 while (dreader.Read())
42 {
43 UserInfo userInfo = new UserInfo();
44 userInfo.Id = dreader["USERID"].ToString();
45 userInfo.Name = dreader["NM"].ToString();
46 userList.Add(userInfo);
47
48 }
49 this.rep.DataSource = userList;
50 this.rep.DataBind();
51
52 dreader.Close();
53 cnn.Close();
54 }
55 }
56 }
然后在需要引用该标签的页面,进行如下设置:
1 <%@ Register Src="~/LoginCtrl.ascx" TagName="LoginCtrl" TagPrefix="LoginControl" %>
2
3
4
5 <LoginControl:LoginCtrl ID="LoginList" runat="server"></LoginControl:LoginCtrl>
这样,一个userList的链接列表就会出来了。
这样做的好处,体现了代码的复用性,无论哪个页面,如果需要用到这样的功能,只需要像上面引用一下,就完全ok了。当然针对不用的情况,自定义标签的编写肯定还是要有所针对地进行变化。
相对于自定义标签来说,还有一种自定义控件,这两者的功能差不多。只不过,自定义控件是要单独见一个控件库进行编写,需要引用的项目通过引用控件库的dll进行引用。

浙公网安备 33010602011771号