您的位置:首页 > 数据库

从SQL Server数据库提取图片并显示在DataGrid

2008-02-20 10:22 549 查看
下面的代码实现从SQL Server数据库提取图片并显示在DataGrid的功能。

下面就是完整的代码,拷贝即可运行:

DataGridShowImage.aspx




<%...@ Page language="c#" debug="true" Codebehind="DataGridShowImage.aspx.cs" AutoEventWireup="false"


Inherits="eMeng.Exam.DataGridShowImage.DataGridShowImage" %>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >


<HTML>


<HEAD>


<title>从数据库中取得照片并显示在DataGrid中</title>


<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">


<meta name="CODE_LANGUAGE" Content="C#">


<meta name="vs_defaultClientScript" content="JavaScript">


<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">


</HEAD>


<body MS_POSITIONING="GridLayout">


<form id="DataGridShowImage" method="post" runat="server">


<h3 align="center">从数据库中取得照片并显示在DataGrid中</h3>


<asp:DataGrid ID="DG_Persons" AutoGenerateColumns="False" Width="99%" HeaderStyle-BackColor="#ff0000"


HeaderStyle-Font-Bold="True" HeaderStyle-ForeColor="#ffffff" ItemStyle-BackColor="Beige"


BorderColor="#000000" Runat="server" HeaderStyle-HorizontalAlign="Center">


<Columns>


<asp:TemplateColumn HeaderText="姓名">


<ItemTemplate>


<asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PersonName") %>' ID="Label1"/>


</ItemTemplate>


</asp:TemplateColumn>


<asp:TemplateColumn HeaderText="电子邮件">


<ItemTemplate>


<asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PersonEmail") %>' ID="Label2"/>


</ItemTemplate>


</asp:TemplateColumn>


<asp:TemplateColumn HeaderText="性别">


<ItemTemplate>


<asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PersonSex") %>' ID="Label3"/>


</ItemTemplate>


</asp:TemplateColumn>


<asp:TemplateColumn HeaderText="出生日期">


<ItemTemplate>


<asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PersonDOB") %>' ID="Label4"/>


</ItemTemplate>


</asp:TemplateColumn>


<asp:TemplateColumn HeaderText="照片">


<ItemTemplate>


<asp:Image Runat=server ID="Image1"


ImageUrl='<%# FormatURL(DataBinder.Eval(Container.DataItem, "PersonID")) %>' />


</ItemTemplate>


</asp:TemplateColumn>


</Columns>


</asp:DataGrid>


</form>


</body>


</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




...{




/**//// <summary>


/// DataGridShowImage 的摘要说明。


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


}






Web Form Designer generated code#region Web Form Designer generated code


override protected void OnInit(EventArgs e)




...{


//


// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。


//


InitializeComponent();


base.OnInit(e);


}




/**//// <summary>


/// 设计器支持所需的方法 - 不要使用代码编辑器修改


/// 此方法的内容。


/// </summary>


private void InitializeComponent()




...{


this.Load += new System.EventHandler(this.Page_Load);


}


#endregion


}


}



ReadImage.aspx




<%...@ Page language="c#" Codebehind="ReadImage.aspx.cs" AutoEventWireup="false"


Inherits="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




...{




/**//// <summary>


/// ReadImage 的摘要说明。


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


}




Web Form Designer generated code#region Web Form Designer generated code


override protected void OnInit(EventArgs e)




...{


//


// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。


//


InitializeComponent();


base.OnInit(e);


}






/**//// <summary>


/// 设计器支持所需的方法 - 不要使用代码编辑器修改


/// 此方法的内容。


/// </summary>


private void InitializeComponent()




...{


this.Load += new System.EventHandler(this.Page_Load);


}


#endregion


}


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: