我有一个gridview。它的数据源是从数据库加载的数据表。 在这个gridview中,我有一个模板列。此列的内容不是直接从数据库中提取的,而是使用当前项的id来创建名称并在图像目录中查找该名称。模板字段为:
<asp:TemplateField>
<itemtemplate>
<img src='../user/images/<% =itemType %><%# DataBinder.Eval(Container.DataItem, "id") %>.jpg?'
alt='<%# DataBinder.Eval(Container.DataItem, "Title") %>' />
</itemtemplate>
</asp:TemplateField>
并非所有项目都有图像,因此我想检查此文件是否存在。如果确实如此,我想使用上面的代码来放置它,如果它不是我想将该字段留空。 在.cs文件中,这是一个if语句,条件设置为File.Exist()。但我找不到.aspx文件中的语法。 这有可能吗?如果可以的话怎么样? 感谢。
答案 0 :(得分:5)
您可以在RowDataBound事件上编码此行为。有些想法如下
请记住将图片设为runat =“server”
protected void GridViewProducts_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType = DataControlRowType.DataRow){
if(!File.Exist(yourFileName){
//hide the image
var img=e.Row.FindControl("theImageId");
img.visible=false;
}
}
}
我认为你应该采用上述解决方案。
无论如何只需添加以下内容
<asp:TemplateField>
<itemtemplate>
<img src='../user/images/<% =itemType %><%# DataBinder.Eval(Container.DataItem, "id") %>.jpg?'
alt='<%# DataBinder.Eval(Container.DataItem, "Title") %>'
<%= File.Exists("yourFileName")? string.Empty : "style='display: none'" %> />
</itemtemplate>
</asp:TemplateField>
答案 1 :(得分:0)
img标签有一个名为onerror的事件。因此,如果您的要求是在找不到图像时执行某些操作,请执行以下操作。
的onerror = “this.src = '图像/为Default.png'”