0

我试图通过数据表绑定在 GrIdView 中显示图像,但它只是打印出纯文本而不是在 ie 中显示图片。

dt = 新数据表();

        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
4

1 回答 1

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"/>
于 2013-07-31T01:02:43.827 回答