默认图像未显示在ASP ImageField中

时间:2014-05-24 04:05:12

标签: c# asp.net gridview

在我的asp.net gridview中有一个ASP ImageField,当图像没有显示或损坏时我需要显示默认图像,这里我使用NullImageUrl但这不会起作用。

我的代码:

<asp:ImageField DataImageUrlField="FilePath" ControlStyle-Height="50" ControlStyle-Width="50" HeaderText="Image Preview" NullImageUrl="~/images/Defaultimg.png" />

2 个答案:

答案 0 :(得分:2)

Gridview图片代码

 <asp:Image class="fbimgsize" ImageUrl='<%# FormatURL(Convert.ToString(DataBinder.Eval(Container.DataItem, "picture"))) %>'
  runat="server" ID="imgUser" />

C#代码:

  public string FormatURL(string img)
    {
        try
        {
            if (Path.GetExtension(img).Equals(".jpg", StringComparison.InvariantCultureIgnoreCase))
            {
                return img;
            }
            else
            {
                return "images/noimage.jpg";
            }
        }
        catch (Exception)
        {
           return "images/noimage.jpg";
        }

    }

答案 1 :(得分:0)

@KarthikManoharan的解决方案适用于本地图像。但是,如果您需要保留ImageFields或者还需要检查远程图像,则必须在代码中添加几行javascript。仅当相应的绑定数据字段为空时才考虑NullImageUrl属性。它不会检查图像网址是否有效。

要修复损坏的网址,您可以执行以下操作:

<asp:GridView runat="server" ID="mySuperGridView">
        <Columns>
            <asp:ImageField DataImageUrlField="ImageUrl" HeaderText="Image Preview" NullImageUrl="~/images/replacement.jpg" />
        </Columns>
    </asp:GridView>    

$(function() {
    $("#mySuperGridView").find("img").error(brokenImageHandler);
});

function brokenImageHandler(image, param1) {
    $(image.target).attr("src", "images/replacement.jpg");
}

请记住,此功能将替换gridview中所有损坏的图像。如果您只想考虑ImageFields,则需要为ImageFields设置自定义属性。这可以在gridview的RowDataBound事件中完成。