【发布时间】:2017-06-28 21:28:09
【问题描述】:
有没有办法通过数据源/数据绑定填充复选框列表,然后实际为每个复选框添加图像?我知道如何分开做,但似乎无法弄清楚如何让它们一起工作。
基本上我会有一个学生的复选框列表供教师选择,我被要求在复选框旁边放一张每个学生的照片。
我目前获取图像的方式是我有一个网络表单,它在 url 中获取一个 ID,然后它从数据库中获取 blob,然后将二进制文件转换为缩略图图像,将其保存在本地,然后重定向到它。然后,当我想在不同的网络表单上获取图像时,我只需要使用Response.Redirect("imgs.aspx?ID=[Student Id]"),它将放入学生的小图像,有没有办法修改复选框列表,以便我可以调用 imgs 网络表单并在他们的复选框旁边显示学生的图像?
imgs.aspx 后面的代码:
protected void Page_Load(object sender, EventArgs e)
{
var stuId = Request.QueryString["ID"];
if (stuId.Length <= 0)
{
stuId = "100097645"; // If no ID number sent, display default 'image not available' thumbnail.
}
var con = new SqlConnection
{
ConnectionString =
removed for security reasons
};
con.Open();
var sqlCommand = new SqlCommand("Select BINARY_OBJECT FROM BLOBS WHERE OWNER_REF=" + stuId, con);
var reader = sqlCommand.ExecuteReader(CommandBehavior.CloseConnection);
reader.Read();
var byteArray = (byte[])reader["BINARY_OBJECT"];
var mstream = new System.IO.MemoryStream(byteArray, 0, byteArray.Length);
var dbImage = System.Drawing.Image.FromStream(new System.IO.MemoryStream(byteArray));
var thumbnailImage = dbImage.GetThumbnailImage(100, 100, null, new IntPtr());
thumbnailImage.Save(mstream, dbImage.RawFormat);
var thumbnailByteArray = new byte[mstream.Length];
mstream.Position = 0;
mstream.Read(thumbnailByteArray, 0, Convert.ToInt32(mstream.Length));
Response.Clear();
Response.BinaryWrite(thumbnailByteArray);
}
到目前为止我有显示图像的代码:
private void StudentSelected()
{
string query = "Select distinct (Convert(varchar, PERSON_CODE) + '|' + FORENAME + ' ' + SURNAME) as StudentName, (Convert(varchar, PERSON_CODE) + '|' + FORENAME + '|' + SURNAME) as StudentValue From people where (FORENAME = '" + stuforename + "') and (SURNAME = '" + stusurname + "') and (Convert(varchar,PERSON_CODE) = '" + stuid + "')";
StudentCheckBoxData.Merge(GetData(query));
cbSelection.DataSource = StudentCheckBoxData;
cbSelection.DataTextField = "StudentName";
cbSelection.DataValueField = "StudentValue";
cbSelection.DataBind();
try
{
foreach (ListItem checkBox in cbSelection.Items)
{
checkBox.Text += string.Format("<img src = \"{0}\" /> ", GetImageUrl(checkBox.Text.Split('|')[0]));
}
}
catch
{
//Display Error Here
}
}
private string GetImageUrl(string id)
{
return string.Format("http://bceforms/Contact/imgs.aspx?ID=", id);
}
目前的问题是它显示了边框,但出现的图像是未找到缩略图的图像,当我遇到此问题之前,因为图像尚未被数据绑定,但是当我使用 .databind();在复选框列表上,因为它显然原始数据源没有图像,它只是删除了图像
任何帮助将不胜感激
【问题讨论】: