武汉北大青鸟光谷校区|北大青鸟网络工程师|武汉电脑培训|武汉电脑学校|武汉IT培训|武汉网络工程师|武汉Linux培训|计算机软件培训
武汉北大青鸟光谷校区
ASP.NET 用户控件的创建和使用
武汉北大青鸟光谷校区 09-11-28

  一个用户控件就是一个简单的ASP.NET页面,不过它是包含在另一个ASP.NET页面的,用户控件文件有如下特点:

  1.扩展名为:.ascx。

  2.用户控件中没有“@ page”指令,而是包含“@ Control”指令,该指令对配置及其他的属性进行定义。

  3.用户控件不能作为独立文件运行,而是必须像处理控件一样,将它们添加到Asp.net页中。

  4.用户控件中没有html,body,或form元素,这些元素不许位于宿主中。

  如下:

  Code

  <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Sample.ascx.cs" Inherits="ASP.NET_3._5.UC.Sample" %>

  <asp:Label ID="ColumnName" runat="server"asp:Label>

  <asp:TextBox ID="Condition" runat="server"></asp:TextBox>

  <asp:Button ID="Search" runat="server" Text="搜索"/>

  创建一个搜索数据的用户控件:

  1.添加一个Sample.ascx的文件

  2.从工具箱中拖入1个Lable控件,设置ID为:ColumnName

  3.从工具箱中拖入1个TextBox控件,设置其属性ID为:Condition,

  4.从工具箱里拖入一个Button控件,并设置其属性ID为:Search,Text为搜索。

  看“源”文件如下:

  Code

  <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Sample.ascx.cs" Inherits="ASP.NET_3._5.UC.Sample" %>

  <asp:Label ID="ColumnName" runat="server"asp:Label>

  <asp:TextBox ID="Condition" runat="server"></asp:TextBox>

  <asp:Button ID="Search" runat="server"  Text="搜索"/>

  5,打开Search.ascx.cn文件看后置代码,定义如下属性

  Code

  public string lableText {get;set;}  //提示用户输入什么样的查询条件

  public string connectionString { get; set; }    //连接数据库

  public GridView resultGridView { get; set; }    //要填充的GridView控件

  public string tableName { get; set; }    //要查询数据库中的数据表名

  public string columnCondition { get; set; }    //根据哪一条进行查询

  public string errorMessage { get; set; }    //错误信息

  6.定义一个函数,SearchResult(),该函数将会根据用户输入的查询条件查询到数据并把数据集返回,该函数要利用到数据库访问知识,代码如下:

  Code

  private DataTable SearchResult() {

  System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connectionString);

  string strsql = "select * from " + tableName + " where " + columnCondition + " like ''%" + this.Condition.Text.ToString() + "%''";

  conn.Open();

  System.Data.OleDb.OleDbDataAdapter ada = new System.Data.OleDb.OleDbDataAdapter(strsql,conn);

  System.Data.DataTable dataTable = new DataTable();

  ada.Fill(dataTable);

  conn.Close();

  return dataTable;

  }

  7.打开Search.ascx文件,双击Search按钮,则在Search.ascx.cs文件中生成按钮事件,这个事件中将绑定数据到GridView中。

  1   protected void Search_Click(object sender, EventArgs e)

  2         {

  3             resultGridView.DataSource = SearchResult().DefaultView;

  4             resultGridView.DataBind();

  5         }

  6

  8.在Page_Load事件中加入初始化ColumnName标签代码,

  protected void Page_Load(object sender, EventArgs e)

  {

  this.ColumnName.Text = this.lableText;

  }

  这样就创建好了一个搜索功能的用户控件,这个控件在哪个页面需要使用时,只需要加入到ASP.ENT页面就行了,像使用WEB控件一样。

  用户控件的使用:

  使用用户控件和使用web控件一样,拖入页面,然后设置他的属性就是了。

  就拿刚才的搜索功能的用户控件来说,

  1.在Default.aspx页面拖入用户控件

  如下代码,我们在页面添加了一个ID为Sample1的用户控件和一个ID为:GridView1的GridView,并绑定数据。

  Code

  <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ASP.NET_3._5._Default" %>

  <%@ Register src="UC/Sample.ascx" tagname="Sample" tagprefix="uc1" %>

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml" >

  <head runat="server">

  <title>用户自定义控件--搜索功能</title>

  </head>

  <body>

  <form id="form1" runat="server">

  <div>

  <uc1:Sample ID="Sample1" runat="server" lableText="城市:"/>

  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">

  <Columns>

  <asp:BoundField DataField="id" HeaderText="序号"/>

  <asp:BoundField DataField="name" HeaderText="姓名"/>

  <asp:BoundField DataField="city" HeaderText="城市"/>

  <asp:BoundField DataField="phone" HeaderText="电话"/>

  <asp:BoundField DataField="carrier" HeaderText="职业"/>

  <asp:BoundField DataField="positon" HeaderText="职位"/>

  </Columns>

  </asp:GridView>

  </div>

  </form>

  </body>

  </html>

  设置页面加载事件

  因为页面已经添加了控件,所以后台代码就可以设置控件的属性的值了,

  Sample1.connectionString 设置连接字符串,

  Sample1.columnCondition 设置按哪个字段查询

  Sample1.tableName = "basic" 设置查询哪个表,

  Sample1.resultGridView = this.GridView1。设置控件的GridView

  Code

  protected void Page_Load(object sender, EventArgs e)

  {

  Sample1.connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\YtbWork\donet\ASP.NET 3.5\ASP.NET 3.5\App_Data\db1.mdb";

  Sample1.columnCondition = "city";

  Sample1.resultGridView = this.GridView1;

  Sample1.tableName = "basic";

  }

  因为我们在控件的按钮事件中有如下代码,所以,当点击搜索,就会绑定数据到GridView

  protected void Search_Click(object sender, EventArgs e)

  {

  resultGridView.DataSource = SearchResult().DefaultView;

  resultGridView.DataBind();

  }

  分析用户控件的创建和使用:

  <%@ Register src="UC/Sample.ascx" tagname="Sample" tagprefix="uc1" %>

  <uc1:Sample ID="Sample1" runat="server" lableText="城市:"/>

 

上一篇 : 几种常见的网络流量浅析 下一篇 : C#获取程序当前路径的7种常用的方法
相关文章
北大青鸟推出争对大学生的学士后课程
北大青鸟IT教育通过ISO9001:2008质量体系认
【武汉晨报】It职业培训助大学生成功就业
RedHat Linux DHCP服务器中继
vmare下Linux空间扩大教程
RedHat Linux DHCP服务器中继
无标题文档
关于我们 - 联系我们 - 乘车路线 - 网站导航 - 版权声明 - 人才招聘 - 帮助

报名咨询:027-87506402
教学质量监督:027-87506403
企业求才热线:027-87506466
版权所有2009 北大青鸟APTECH 武汉光谷职业技能培训中心
邮编:430074    鄂ICP备05004881号
地址:武汉体院斜对面洪山科技创业中心B座三楼
武汉IT培训 武汉电脑培训学校 IT培训学校 网络工程师培训 CISCO网络开发