如果提交了gridview模板中的语句

时间:2011-05-17 10:13:12

标签: c# asp.net

我有一个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文件中的语法。 这有可能吗?如果可以的话怎么样? 感谢。

2 个答案:

答案 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'”