在 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";
}
}
这应该可以完成您想要做的事情。
如何在 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";
}
}
这应该可以完成您想要做的事情。