我在将图像放入DataTable并将此表设置为gridview的数据源时出现问题,我到处搜索过,但没有我没有运气。 这是问题所在:
private void populateGrid()
{
// Gets a datatable from a stored procedure
DataTable ragTable = ProjetoBO.HistoricoRAGStatusProjeto(Convert.ToInt32(Session["idProjeto"]));
int group= -1;
int cont = 1;
var table = GetDataTable(ragTable);
DataRow dataRow = table.NewRow();
foreach (DataRow row in ragTable.Rows)
{
cont++;
if (Convert.ToInt32(row[9]) != group)
{
cont = 1;
group= Convert.ToInt32(row[9]);
table.Rows.Add(dataRow);
dataRow = tabelaFinal.NewRow();
}
dataRow[0] = DateTime.Parse(row[2].ToString()).ToShortDateString();
//putting some random image just for testing purpose
dataRow[cont] = Properties.Resources.myIcon;
}
//my grid
histRagStatus.DataSource = table ;
histRagStatus.DataBind();
}
//Creates a dataTable with the columns I need
private DataTable GetDataTable(DataTable ragTable)
{
var newTable= new DataTable();
newTable.Columns.Add("Date");
foreach (DataRow row in ragTable.Rows)
{
if (!newTable.Columns.Cast<DataColumn>().Any(column => column.ColumnName.Equals(row[6].ToString())))
{
var newColumn= new DataColumn(row[6].ToString());
newTable.Columns.Add(newColumn);
}
}
return newTable;
}
我一直在尽我所能,创建一个新列,如var newColumn = new DataColumn(row [6] .ToString(),typeof(Bitmap)); /转换为图像并在添加到DataTable之前放置/更改列的数据类型...但没有运气...我只需要正确的方法从Properties.Resources获取图像并将其放在DataTable上,将绑定到网格,图像将出现在gridview ...
现在任何帮助对我来说都很宝贵= D
答案 0 :(得分:1)
我不知道在GridView中本地渲染图像文件(包括BMP)的方法。
在您的情况下,我要做的是将该位图保存在虚拟目录中的本地文件中。获得文件名后,可以将该文件名绑定到GridView中的ImageField
列。
答案 1 :(得分:0)
将二进制位图存储在DataTable中仅适用于带有DataGridView控件的Windows窗体。在ASP.NET DataGrid中,您必须引用图像URL。简单的方法是在DataGrid中启用事件RowDataBound。
然后使用代码将其连接到您的图像位置。
protected void GridView1_RowDataBound(object sender, GridViewRowWEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
//Setup in your image column index. By Example setting 0
e.Row.Cells[0].Text=Server.HtmlDecode(@"<img src=""./Images/pdf.gif"" />");
}
}