我有一个检索employeesedata的列表框,当我点击员工时,我会得到他的名字,姓氏和他的照片。
我做了所有事情,直到从数据库显示图像。我在下面有这个代码。当我点击列表框中的employeename时,我想加载并显示他的照片以及他的名字。 (SQL列EmployeePhoto是“image”类型,我将员工图像成功插入二进制文件。
在堆栈中抓取此主题但未找到我能理解的有用解决方案。需要你的帮助,谢谢。
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) //select listbox item
{
try
{
cnn.Open();
SqlCommand cmd = new SqlCommand("SELECT EmployeeFirstName,EmployeeLastName,EmployeePhoto FROM Employees WHERE EmployeeID = @myvalue", cnn);
cmd.Parameters.AddWithValue("@myvalue", (ListBox1.SelectedValue));
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
TextBox1.Text = dr.GetString(0);
TextBox2.Text = dr.GetString(1);
//want to display EmployeePhoto in ID:Image1 that was saved as binary
}
}
cnn.Close();
}
catch (Exception ex)
{
Label1.Text = ex.Message;
}
}
答案 0 :(得分:0)
我会将图像保存到文件系统(使用File.WriteAllBytes()
)。然后在图像框中显示文件系统中的文件。
答案 1 :(得分:0)
您需要图像处理程序(ASHX)才能向浏览器显示二进制数据。
例如,
using System;
using System.Web;
public class ImageHandler : IHttpHandler, IReadOnlySessionState
{
public void ProcessRequest(HttpContext context)
{
// Query image data from database based on query string value.
context.Response.BinaryWrite(YourImageByte);
}
public bool IsReusable {
get { return false; }
}
}
// Usage
Image1.ImageUrl ="ImageHandler.ashx?id=5"
答案 2 :(得分:0)
您应该使用ListView
控件,而不是ListBox
。
ListViewiItem具有ImageIndex
属性,使您可以指定要从中呈现的图像的索引(它也支持绑定)