Bagaimana saya bisa menampilkan gambar di GridView dari folder di proyek saya? Saya sudah mencoba membuat image/imageField secara dinamis, tetapi tidak berhasil- Saya tidak tahu cara menghubungkan gambar ke imageField di GridView saya, dan itulah masalah utama saya. Bagaimana saya bisa melakukannya?

Inilah GridView saya:

            <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>

(Selain itu, tidak apa-apa menggunakan imageField sama sekali?)

Dan inilah Kode saya Dibalik:

    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();
        }
    }

Terima kasih(:

0
user13525644 18 Juni 2020, 17:37

1 menjawab

Jawaban Terbaik

Url gambar tidak ada dalam kumpulan data sehingga dapat mengubah definisi GridView Anda menjadi

<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>

Ubah pemuatan halaman Anda menjadi

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();
    }
}

Tambahkan berikut

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

Ini harus mencapai apa yang Anda coba lakukan.

0
Shahid Syed 18 Juni 2020, 16:14