在 gridView 中显示文件夹中的图像 ASP.NET

displaying images from a folder in a gridView ASP.NET

如何在 GridView 中显示项目文件夹中的图像? 我试图动态创建一个 image/imageField,但它没有用——我不知道如何将图像连接到我的 GridView 中的 imageField,这是我的主要问题。 我该怎么做?

这是我的 GridView:

            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                Height="271px" onselectedindexchanged="GridView1_SelectedIndexChanged" 
                style="font-family: Arial, Helvetica, sans-serif" Width="452px">
                <Columns>
                    <asp:BoundField DataField="messageSubject" HeaderText="subject" />
                    <asp:BoundField DataField="messageContent" HeaderText="content" />
                    <asp:BoundField DataField="wasReadOrNot" HeaderText="was read" />
                    <asp:ImageField HeaderText="image">
                    </asp:ImageField>
                </Columns>
            </asp:GridView>

(另外,根本不用imageField就可以了?)

下面是我的代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        Page.MaintainScrollPositionOnPostBack = true;
        if (!IsPostBack)
        {
            WebServiceDBMessages.WebServiceDBMessagesSoapClient dbm = new WebServiceDBMessages.WebServiceDBMessagesSoapClient();
            DataTable dt = dbm.ReturnAllMessagesForTeacher(Session["teacher"].ToString()).Tables[0];
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                if (GridView1.Rows[i].Cells[3].Text == "not read")
                {
                    //here i want to display image whose url is: "/images/notRead.png"
                }
                else
                {
                      //here i want to display image whose url is: "/images/read.png"
                }
            }
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
    }

谢谢(:

图像 url 不在数据集中,因此可以将您的 GridView 定义更改为

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            Height="271px" onselectedindexchanged="GridView1_SelectedIndexChanged" 
            style="font-family: Arial, Helvetica, sans-serif" Width="452px" OnRowDataBound="GridView1_RowDataBound">
    <Columns>
        <asp:BoundField DataField="messageSubject" HeaderText="subject" />
        <asp:BoundField DataField="messageContent" HeaderText="content" />
        <asp:BoundField DataField="wasReadOrNot" HeaderText="was read" />
        <asp:TemplateField HeaderText="image">
            <ItemTemplate>
                <asp:Image runat="server" ID="img" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

将您的页面加载更改为

protected void Page_Load(object sender, EventArgs e)
{
    Page.MaintainScrollPositionOnPostBack = true;
    if (!IsPostBack)
    {
        WebServiceDBMessages.WebServiceDBMessagesSoapClient dbm = new WebServiceDBMessages.WebServiceDBMessagesSoapClient();
        DataTable dt = dbm.ReturnAllMessagesForTeacher(Session["teacher"].ToString()).Tables[0];

        GridView1.DataSource = dt;
        GridView1.DataBind();
    }
}

添加关注

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            var image = e.Row.FindControl("img") as Image;
            image.ImageUrl = e.Row.Cells[3].Text == "not read" ? "/images/notRead.png" : "/images/read.png";
        }
    }

这应该可以完成您想要做的事情。