我正在尝试通过数据表绑定在GrIdView中显示图像,但它只是打印出纯文本而不是在ie中显示图片。
dt = new DataTable();
dt.Columns.Add("Status", typeof(string));
dt.Columns.Add("CRQ", typeof(String));
dt.Columns.Add("Summary", typeof(String));
dt.Columns.Add("Time", typeof(String));
Session["TempTable"] = dt;
GridView1.DataSource = dt;
//
//datat load
dt = (DataTable)Session["TempTable"]; // Fetching datatable from session
DataRow dr = dt.NewRow(); // Adding new row to datatable
dr[0] = "<img src='C:\\Users\\josephs\\Desktop\\red.jpg' style='border-width:0px'/>";
dr[1] = "CRQ000000000789";
dr[2] = "Test CRQ Summary, example data";
dr[3] = "WED 31/07/2013 16:00:00 PM";
dt.Rows.Add(dr);
DataRow dr2 = dt.NewRow(); // Adding new row to datatable
dr2[0] = "<img src='C:\\Users\\josephs\\Desktop\\red.jpg' style='border-width:0px'/>";
dr2[1] = "CRQ000000000889";
dr2[2] = "Test another CRQ, example data";
dr2[3] = "Tue 6/08/2013 14:00:00 PM";
dt.Rows.Add(dr2);
Session["TempTable"] = dt; // update datatable in session
GridView1.DataSource = dt; // updated datatable is now new datasource
GridView1.DataBind(); // calling databind on gridview
答案 0 :(得分:3)
默认情况下,GridView会对单元格的HTML内容进行编码。
在网格ASPX标记中添加对RowDataBound事件处理程序的引用
<asp:gridview id="GridView1"
autogeneratecolumns="true"
onrowdatabound="GridView1_RowDataBound"
runat="server">
</asp:gridview>
然后添加以下代码:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) {
if (e.Row.RowType == DataControlRowType.DataRow) {
e.Row.Cells[0].Text = Server.HtmlDecode(e.Row.Cells[0].Text);
}
}
注意:在ASP.NET应用程序中,将物理路径引用为IMG源并不是一个好主意 - 它只能在您的开发机器上运行。将图像放在应用程序的子文件夹中,并使用相对虚拟路径。
哦顺便说一下,如果你的GridView中的列不是自动生成的,而是在网格的ASPX标记中定义,那么代替上面的方法简单地将属性htmlencode="false"
添加到boundfield的声明:
<asp:boundfield datafield="Status"
htmlencode="false"
headertext="Status"/>