2014-05-24 1 views
0

Dans mon gridview asp.net il y a un champ d'image ASP, quand l'image n'est pas montrée ou cassée j'ai besoin d'afficher l'image par défaut, ici j'utilise NullImageUrl pour ceci mais ceci ne fonctionnera pas.L'image par défaut n'est pas affichée dans ASP ImageField

Mon code:

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

vérifiez la db pour que l'image déposée soit nulle ou vide, si elle est vide, elle ne fonctionnera pas. – KarthikManoharan

+0

@KarthikManoharan J'ai besoin lorsque ce fichier n'est pas un fichier image, alors besoin d'afficher l'image par défaut ici. – TechGuy

+0

Oh bien, même concept mais j'ai utilisé différemment je vais poster le code ci-dessous si vous avez besoin, vous pouvez l'utiliser. – KarthikManoharan

Répondre

2

Gridview image Tag

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

C# Code:

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"; 
     } 

    } 
+0

Cela ne peut pas être fait avec ASP Image Field savoir? – TechGuy

+0

pourquoi vous pouvez utiliser l'image déposée – KarthikManoharan

0

La solution de @KarthikManoharan fonctionne pour les images locales. Cependant, si vous devez conserver ImageFields ou vérifier des images distantes, vous devez ajouter quelques lignes de javascript à votre code. La propriété NullImageUrl est prise en compte uniquement lorsque le champ de données lié correspondant est null. Il ne vérifie pas si l'URL de l'image est valide ou non.

Pour corriger votre URL brisée que vous pourriez faire ceci:

<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"); 
} 

Gardez à l'esprit que cette fonction remplacerait toutes les images brisées dans votre gridview. Si vous souhaitez uniquement considérer vos ImageFields, vous devez utiliser un attribut personnalisé pour vos ImageFields. Cela peut être fait dans l'événement RowDataBound de la grille.

Questions connexes