DataGrid显示图片和详细信息问题
(1)显示图片
数据库表为:tblPigeon(PigeonNo,PigeonImage),其中有一个字段为PigeonImage是Image类型 (说明:数据库类型为SQLSERVER),我想在DataGrid中显示tblPigeon表中PigeonImage字段的缩略图
我参照"从SQL Server数据库提取图片并显示在DataGrid "的例子(具体网址:http://xml.sz.luohuedu.net/xml/ShowDetail.asp?id=ECD9AE16-8FF0-4A1C-9B9F-5E8B641CB1B1) 编写了如下代码但是加载后在DataGrid中总是不能显示图片(Image控件显示的总是一个叉),请各位高手看一下我的代码有什么问题
========================================================================
**frmPigeon.aspx(在该页面上有DataGrid,用来显示图片)
其中的图片ID列是按如下方式编写的
<asp:TemplateColumn HeaderText="图片名称">
<ItemTemplate>
<asp:Image id=Image1 runat="server" ImageUrl='<%# FormatUrl(DataBinder.Eval(Container, "DataItem.PigeonNo")) %>' ImageAlign="Middle">
</asp:Image>
</ItemTemplate>
</asp:TemplateColumn>
**frmPigeon.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;
using System.Data.SqlTypes;
namespace LiminWeb
{
/// <summary>
/// frmPigeon 的摘要说明。
/// </summary>
public class frmPigeon : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
LoadData();
}
}
private void LoadData()
{
DataSet objDs=new DataSet();
objDs=clsBase.clsBase.ExecuteSQL("Select * from tblPigeon");
DataGrid1.DataSource=objDs.Tables[0].DefaultView;
DataGrid1.DataBind();
}
protected string FormatUrl(object strArg)
{
return "frmReadImage.aspx?id="+strArg.ToString();
}
#region Web 窗体设计器生成的代码
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
}
}
**frmReadImage.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.SqlTypes;
using System.Data.SqlClient;
namespace LiminWeb
{
/// <summary>
/// frmReadImage 的摘要说明。
/// </summary>
public class frmReadImage : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
SqlDataReader objDr=clsBase.clsBase.ExecuteReader("Select PigeonImage from tblPigeon where PigeonNo='"+Request.QueryString["id"]+"'");
Response.ContentType="image/pjpeg";
while(objDr.Read())
{
Response.BinaryWrite((byte[])objDr["PigeonImage"]);
}
objDr.Close();
Response.End();
}
#region Web 窗体设计器生成的代码
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
}
}
========================================================================
2.另外我想在DataGrid建立一个链接的列,当单击该列时弹出一个新的窗口显示该行记录的详细信息
以上问题请各路高手多多指点,解决后马上给分,在线等,多谢!!!