|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
对用户来说可预见费用、节约费用,可以做到花少钱办大事。由于省去了购买软件和硬件等的前期费用,用户可以租用较高级的应用软件。ASP的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。datagrid|数据|数据库|显现媒介
我们怎样创立一个DataGrid列,显现从数据库中取得的图象?
这是一个常常被问及的关于DataGrid控件的成绩,并且其他能够很简单地经由过程分离你已晓得的关于模板列的内容和一点点关于HTTP处置句柄(HTTPHandler)的常识往返答。
上面利用NorthWind数据库的Employees表来在一个DataGrid中显现数据库中的图象。
代码
---BindImg.aspx
<%@Pagelanguage="c#"Codebehind="BindImg.aspx.cs"AutoEventWireup="false"Inherits="ShowImg.BindImg"%>
<HTML>
<HEAD>
<title>BindImg</title>
</HEAD>
<body>
<formid="Form1"method="post"runat="server">
<FONTface="宋体">
<asp:DataGridid="MyDataGrid"runat="server"AutoGenerateColumns="False"Width="632px">
<AlternatingItemStyleBackColor="Beige"></AlternatingItemStyle>
<HeaderStyleHorizontalAlign="Center"></HeaderStyle>
<Columns>
<asp:TemplateColumnHeaderText="Photo">
<ItemTemplate>
<imgsrc=<%#"GetImg.ashx?ID="+DataBinder.Eval(Container.DataItem,"EmployeeID")%>>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumnDataField="LastName"HeaderText="LastName"></asp:BoundColumn>
<asp:BoundColumnDataField="FirstName"HeaderText="FirstName"></asp:BoundColumn>
<asp:BoundColumnDataField="title"HeaderText="Title"></asp:BoundColumn>
</Columns>
</asp:DataGrid></FONT>
</form>
</body>
</HTML>
---BindImg.aspx.cs
usingSystem;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Web;
usingSystem.Data.SqlClient;
namespaceShowImg
{
///<summary>
///BindImg的择要申明。
///</summary>
publicclassBindImg:System.Web.UI.Page
{
protectedSystem.Web.UI.WebControls.DataGridMyDataGrid;
privatevoidPage_Load(objectsender,System.EventArgse)
{
//在此处安排用户代码以初始化页面
if(!Page.IsPostBack)
{
SqlConnectionconn=newSqlConnection(@"Server=shoutormydb;database=northwind;uid=sa;Pwd=shoutor");
try
{
conn.Open();
SqlCommandcmd=newSqlCommand("selectemployeeID,lastname,firstname,titlefromemployees",conn);
SqlDataReaderreader=cmd.ExecuteReader();
MyDataGrid.DataSource=reader;
MyDataGrid.DataBind();
}
finally
{
conn.Close();
}
}
}
#regionWeb窗体计划器天生的代码
overrideprotectedvoidOnInit(EventArgse)
{
//
//CODEGEN:该挪用是ASP.NETWeb窗体计划器所必须的。
//
InitializeComponent();
base.OnInit(e);
}
///<summary>
///计划器撑持所需的办法-不要利用代码编纂器修正
///此办法的内容。
///</summary>
privatevoidInitializeComponent()
{
this.Load+=newSystem.EventHandler(this.Page_Load);
}
#endregion
}
}
---GetImg.ashx
<%@WebHandlerLanguage="C#"Class="ShowImg.GetImg"%>
---GetImg.aspx.cs
usingSystem;
usingSystem.Web;
usingSystem.Data;
usingSystem.Data.SqlClient;
usingSystem.Drawing;
usingSystem.Drawing.Imaging;
usingSystem.IO;
namespaceShowImg
{
///<summary>
///GetImg的择要申明。
///</summary>
publicclassGetImg:IHttpHandler
{
publicvoidProcessRequest(HttpContextcontext)
{
stringid=(string)context.Request["id"];
if(id!=null)
{
MemoryStreamstream=newMemoryStream();
SqlConnectionconn=newSqlConnection(@"Server=shoutormydb;database=northwind;uid=sa;Pwd=shoutor");
Bitmapbm=null;
Imageimage=null;
try
{
conn.Open();
SqlCommandcmd=newSqlCommand("selectphotofromemployeeswhereemployeeid="+id+"",conn);
byte[]blob=(byte[])cmd.ExecuteScalar();
stream.Write(blob,78,blob.Length-78);
bm=newBitmap(stream);
intwidth=48;
intheight=(int)(width*((double)bm.Height/(double)bm.Width));
//GetThumbnailImage生</p>ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失; |
|