2010-08-24 4 views
2

У меня был контроль ретранслятора, у которого был контроль над изображением, иногда этот контроль изображения не имел данных, и я хочу скрыть его, когда он не имел данных, я сделал код, но он отображался как изображение без данных (не доступно), пожалуйста, кто-нибудь мне поможет. Примечание: Это данные из базы данных, так Img Имел Id из базы данных, но без значения (NULL)Как скрыть контроль изображения, когда у него нет 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; 
      } 
     } 


    } 



} 

ответ

1

Лучший способ сделать это было бы извлечь Данные логотипа в исходном запросе, который используется для заполнения вашего ретранслятора. Затем вы сможете установить свойство Visible на свой образ на основе этих данных, вместо того, чтобы выполнять новый запрос datbase, когда каждая строка привязана. Это значительно повысит производительность вашей страницы.

Что касается кода, который вы выложили, вы не передавая идентификатор изображения в 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

Может быть, что имущество было назначено с пустой строкой где-нибудь? Попробуйте использовать string.IsNullOrEmpty вместо:

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

Как примечание стороны, это можно было бы сделать короче (выбрать любой стиль подходит вам лучше всего):

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

Примечание: Это данные из базы данных, так Img Имел Id из базы данных, но без значения (NULL) – Myworld

Смежные вопросы