二.从SQL Server数据库提取图片并显示在DataGrid
DataGridShowImage.aspx
1@ Page language="c#" debug="true" Codebehind="DataGridShowImage.aspx.cs" AutoEventWireup="false"
2Inherits="eMeng.Exam.DataGridShowImage.DataGridShowImage"
1<html>
2<head>
3<title>从数据库中取得照片并显示在DataGrid中</title>
4<meta content="Microsoft Visual Studio 7.0" name="GENERATOR"/>
5<meta content="C#" name="CODE_LANGUAGE"/>
6<meta content="JavaScript" name="vs_defaultClientScript"/>
7<meta content=" http://schemas.microsoft.com/intellisense/ie5 " name="vs_targetSchema"/>
8</head>
9<body ms_positioning="GridLayout">
10<form id="DataGridShowImage" method="post" runat="server">
11<h3 align="center">从数据库中取得照片并显示在DataGrid中</h3>
12<asp:datagrid autogeneratecolumns="False" bordercolor="#000000" headerstyle-backcolor="#ff0000" headerstyle-font-bold="True" headerstyle-forecolor="#ffffff" headerstyle-horizontalalign="Center" id="DG_Persons" itemstyle-backcolor="Beige" runat="server" width="99%">
13<columns>
14<asp:templatecolumn headertext="姓名">
15<itemtemplate>
16<asp:label id="Label1" runat="server" text='```
17# DataBinder.Eval(Container.DataItem, "PersonName")
18```'></asp:label>
19</itemtemplate>
20</asp:templatecolumn>
21<asp:templatecolumn headertext="电子邮件">
22<itemtemplate>
23<asp:label id="Label2" runat="server" text='```
24# DataBinder.Eval(Container.DataItem, "PersonEmail")
25```'></asp:label>
26</itemtemplate>
27</asp:templatecolumn>
28<asp:templatecolumn headertext="性别">
29<itemtemplate>
30<asp:label id="Label3" runat="server" text='```
31# DataBinder.Eval(Container.DataItem, "PersonSex")
32```'></asp:label>
33</itemtemplate>
34</asp:templatecolumn>
35<asp:templatecolumn headertext="出生日期">
36<itemtemplate>
37<asp:label id="Label4" runat="server" text='```
38# DataBinder.Eval(Container.DataItem, "PersonDOB")
39```'></asp:label>
40</itemtemplate>
41</asp:templatecolumn>
42<asp:templatecolumn headertext="照片">
43<itemtemplate>
44<asp:image id="Image1" imageurl='```
45# FormatURL(DataBinder.Eval(Container.DataItem, "PersonID"))
46```' runat="server"></asp:image>
47</itemtemplate>
48</asp:templatecolumn>
49</columns>
50</asp:datagrid>
51</form>
52</body>
53</html>
DataGridShowImage.aspx.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
namespace eMeng.Exam.DataGridShowImage
{
///
1<summary>
2/// DataGridShowImage 的摘要说明。
3/// </summary>
public class DataGridShowImage : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DG_Persons;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!this.IsPostBack)
{
BindGrid();
}
}
private void BindGrid()
{
string strCnn = "Data Source=.;Initial Catalog=mxh;User Id=sa;Password=;";
SqlConnection myConnection = new SqlConnection(strCnn);
SqlCommand myCommand = new SqlCommand("SELECT * FROM Person", myConnection);
myCommand.CommandType = CommandType.Text;
try
{
myConnection.Open();
DG_Persons.DataSource = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
DG_Persons.DataBind();
}
catch(SqlException SQLexc)
{
Response.Write("提取数据时出现错误:" + SQLexc.ToString());
}
}
protected string FormatURL(object strArgument)
{
return "ReadImage.aspx?id=" + strArgument.ToString();
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
///
1<summary>
2/// 设计器支持所需的方法 - 不要使用代码编辑器修改
3/// 此方法的内容。
4/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
ReadImage.aspx
1@ Page language="c#" Codebehind="ReadImage.aspx.cs" AutoEventWireup="false"
2Inherits="eMeng.Exam.DataGridShowImage.ReadImage"
ReadImage.aspx.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Data.SqlClient;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace eMeng.Exam.DataGridShowImage
{
///
1<summary>
2/// ReadImage 的摘要说明。
3/// </summary>
public class ReadImage : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string strImageID = Request.QueryString["id"];
SqlConnection myConnection = new SqlConnection("Data Source=.;Initial Catalog=mxh;User Id=sa;Password=;");
SqlCommand myCommand = new SqlCommand("Select PersonImageType, PersonImage from Person Where PersonID="
+ strImageID, myConnection);
try
{
myConnection.Open();
SqlDataReader myDataReader;
myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
if(myDataReader.Read())
{
Response.Clear();
Response.ContentType = myDataReader["PersonImageType"].ToString();
Response.BinaryWrite((byte[])myDataReader["PersonImage"]);
}
myConnection.Close();
}
catch (SqlException SQLexc)
{
}
Response.End();
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
///
1<summary>
2/// 设计器支持所需的方法 - 不要使用代码编辑器修改
3/// 此方法的内容。
4/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}