ASP.NET网站开发——用户控件和HttpHandler

 1.用户控件

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

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

2.从工具箱拖入一个Lable控件,设置id为:CoName

3.从工具箱拖入一个TextBox控件,设置id为:Cotion

4.从工具箱拖入一个Button控件,设置id为:Search,Text为搜索。

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Sample.ascx.cs" Inherits="ASP.NET_3._5.UC.Sample" %>
<asp:Label ID="CoName" runat="server"asp:Label>
<asp:TextBox ID="Cotion" runat="server"></asp:TextBox>
<asp:Button ID="Search" runat="server"  Text="搜索"/>

5.打开Test.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.定义一个函数,Test(),该函数将会根据用户输入的查询条件查询到数据集并返回,该函数要利用到数据库访问知识,代码如下:

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.打开Test.ascx文件,双击Search按钮,则在Test.ascx.cs文件中生成按钮事件,这个事件中将绑定数据到GridView中。

protected void Search_Click(object sender, EventArgs e)
         {
            resultGridView.DataSource = SearchResult().DefaultView;
            resultGridView.DataBind();
         }

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

protected void Page_Load(object sender, EventArgs e)
{
this.ColumnName.Text = this.lableText;
}

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

用户控件的使用:

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

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

(1)在页面拖入用户控件

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

<%@ 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

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();
}

2.HttpHandler

(1)在名为啊哈的web文件中,新建一个名为ProductImgs的文件夹把图片添加进去:


(2)在Default.aspx文件中添加<asp:Image>控件代码如下:

<body>
    <form id="form1" runat="server">
    <div>
      
    </div>
    <div style="margin: 0 auto; width: 900px">
        <asp:Image ID="Image1" runat="server" ImageUrl="~/ProductImgs/1.jpg" />
        <asp:Image ID="Image2" runat="server" ImageUrl="~/ProductImgs/2.jpg" />
        <asp:Image ID="Image3" runat="server" ImageUrl="~/ProductImgs/3.jpg" />
        <asp:Image ID="Image4" runat="server" ImageUrl="~/ProductImgs/4.bmp" />
        <asp:Image ID="Image9" runat="server" ImageUrl="~/ProductImgs/default.jpg" />
    </div>
    
    </form>
</body>

(3)新建一个名为Handler1.ashx的一般处理程序代码如下:

  public void ProcessRequest(HttpContext context)
        {
            Image img;
            string path = context.Request.PhysicalPath;// context.Request.MapPath(IMGS + context.Request.QueryString["id"] + ".jpg");
            if (File.Exists(path))
            {
                img = Image.FromFile(path);
                Graphics graphics = Graphics.FromImage(img);
                graphics.DrawString("测试文本",new Font("宋体",20),Brushes.Red,img.Width-80,img.Height-20);
                graphics.Dispose();
            }
            else
            {
                img = null;
            }
            context.Response.ContentType = "image/jpeg";
            img.Save(context.Response.OutputStream,ImageFormat.Jpeg);
            img.Dispose();
            context.Response.End();
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }

结果如下:
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值