在我的asp.net gridview中有一个ASP ImageField,当图像没有显示或损坏时我需要显示默认图像,这里我使用NullImageUrl但这不会起作用。
我的代码:
<asp:ImageField DataImageUrlField="FilePath" ControlStyle-Height="50" ControlStyle-Width="50" HeaderText="Image Preview" NullImageUrl="~/images/Defaultimg.png" />
答案 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事件中完成。