2010-08-24 3 views
2

J'ai eu le contrôle Repeater qui avait le contrôle d'image parfois ce contrôle d'image hadnot des données et je veux le cacher quand il n'avait pas de données j'ai fait le code mais il a affiché comme image sans données. Note: Ces données proviennent de la base de données pour Img Had Id base de données mais sans valeur (NULL)Comment masquer le contrôle d'image lorsqu'il n'a pas d'URL?

protected void DLHome_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 

    Image Img = e.Item.FindControl("ModelLogo") as Image; 
    using (SqlConnection con = Connection.GetConnection()) 
    { 
     string Sql = "Select Logo From Model"; 
     SqlCommand com = new SqlCommand(Sql, con); 
     com.CommandType = CommandType.Text; 
     SqlDataReader dr = com.ExecuteReader(); 
     if (dr.Read()) 
     { 
      string Img2 = dr["Logo"].ToString(); 
      if (Img2 == System.DBNull.Value.ToString()) 
      { 
       Img.Visible = false; 
      } 
     } 


    } 



} 

Répondre

1

Une meilleure façon de le faire serait de récupérer la Les données du logo dans la requête d'origine qui est utilisée pour remplir votre répéteur. Ensuite, vous serez en mesure de définir la propriété Visible sur votre image basée sur ces données, plutôt que d'avoir à effectuer une nouvelle requête de base de données lorsque chaque ligne est liée. Cela augmentera considérablement les performances de votre page.

En ce qui concerne le code que vous avez posté, vous n'êtes pas le passage d'un identifiant d'image au SQLCommand

string Sql = "Select Logo From Model where ImageId = @ImageId"; 

    //Assuming List<ImageModel> is what you are binding to the repeater 
    ImageModel model = e.Item.DataItem as ImageModel; 
    com.Parameters.Add("@ImageId", SqlDbType.Int32, model.ImageId); 
1

pourrait-il que la propriété a été affectée à une chaîne vide quelque part? Essayez d'utiliser string.IsNullOrEmpty à la place:

if (string.IsNullOrEmpty(Img.ImageUrl)) 
{ 
    Img.Visible = false; 
} 

Comme une note de côté, cela pourrait être plus court (choisir selon costumes style que vous le mieux):

Img.Visible = !string.IsNullOrEmpty(Img.ImageUrl); 
+0

Note: Ces données proviennent de la base de données si Img Had Id base de données mais sans valeur (NULL) – Myworld

Questions connexes