отображение изображений из папки в gridView ASP.NET - PullRequest
0 голосов
/ 18 июня 2020

Как я могу отображать изображения в GridView из папки в моем проекте? Я пытался создать image / imageField динамически, но это не сработало - я не знаю, как подключить изображения к imageField в моем GridView, и это моя основная проблема. Как я могу это сделать?

Вот мой 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();
        }
    }

Спасибо (:

1 Ответ

0 голосов
/ 18 июня 2020

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";
        }
    }

Это должно выполнить sh то, что вы пытаетесь сделать.

...