【问题标题】:displaying images from a folder in a gridView ASP.NET在 gridView ASP.NET 中显示文件夹中的图像
【发布时间】:2020-06-19 00:14:06
【问题描述】:

如何在 GridView 中显示项目文件夹中的图像? 我试图动态地创建一个图像/图像字段,但它不起作用——我不知道如何将图像连接到我的 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();
        }
    }

谢谢(:

【问题讨论】:

    标签: c# asp.net code-behind


    【解决方案1】:

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

    这应该会完成您正在尝试做的事情。

    【讨论】:

    • 很高兴它有帮助。请将问题标记为已回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    相关资源
    最近更新 更多