2013-09-20 3 views
1

Я новичок-стажер, который пытается «исправить» код C# для внутренней формы. код заполняет пару сеток данных датой из нашей базы данных.сделать кнопки видимыми в зависимости от состояния

Есть несколько кнопок экспорта, которые я хочу сделать невидимыми, если одна из сеток возвращается без каких-либо строк (что иногда случается так, как должно).

Когда вы нажимаете кнопку «Go», чтобы заполнить сетку, кнопки должны стать невидимыми, если определенная сетка возвращается без строк;

Однако это не сработает!

Я отправил все события нажатия кнопки для контекста, но моя попытка ввода кнопок в/видимая находится в самом низу (некоторые идентификационные материалы были удалены в коде по соображениям безопасности).

Что я делаю неправильно?

public void btn_go_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     string site = this.ddl_site.SelectedValue; 
     string srn = this.ddl_al.SelectedValue; 

     int siteID = Common.CommonFunctions.XXXXXX_SiteID(site); 

     using (DBML.XXXXDataContext db = AuthUtils.Auth.getDataContext(Common.DataContextE.XXXXX, Common.CommonFunctions.getXXXXX_ServerFromString(site))) 
     { 

      var CHAL = (from gal in db.XXXXXXXAccessLevels 
         where gal.ServerID.Equals((short)siteID) 
         && gal.ServerRecordNumber.ToString().Equals(srn) 

         select gal.XXXXXccessLevels.FirstOrDefault()); 
      if (CHAL.First() == null) 
      { 
       throw new Exception("No corresponding CHAL for this GAL [SiteID=" + siteID + ",SRN=" + srn + "]"); 
      } 

      BaseClasses.XXXXXXX_AccessLevel al = new BaseClasses.XXXXXXX_AccessLevel(CHAL.FirstOrDefault()); 

      this.lbl_al_tag.Text = "Access Level Name: "; 
      this.lbl_al_name.Text = al.AccessLevelName; 
      this.lbl_al_desc_tag.Text = "Access Level Descr: "; 
      this.lbl_al_desc.Text = al.AccessLevelDesc; 

      this.gv_people.DataSource = al.getPeople(); 
      this.gv_people.RowDataBound += new GridViewRowEventHandler(gv_people_RowDataBound); 

      this.gv_people.DataBind(); 

      this.gv_doors.DataSource = al.getDoors(); 

      this.gv_doors.RowDataBound += new GridViewRowEventHandler(gv_doors_RowDataBound); 

      this.gv_doors.DataBind(); 

      this.gv_doors.Visible = true; 
      this.gv_people.Visible = true; 
      this.lbl_al_name.Visible = true; 
      this.lbl_al_desc.Visible = true; 

      //attempt to hide export buttons for 
      ////Working on this right here 
      int rowCount = this.gv_doors.Rows.Count; 
      if (rowCount > 0) 
      { 
       export_excel.Visible = true; 
       export_excell_both.Visible = true; 
      } 
      else 
      { 
       export_excel.Visible = false; 
       export_excell_both.Visible = false; 

      } 




     } 
    } 
+0

Вы уверены, что 'this.gv_doors' имеет строки в ваших тестах? – Jonesopolis

ответ

0

, если вы пытаетесь использовать int rowCount = al.getDoors().Count вместо строк рассчитывать сетки? возможно, подсчет строк сетки еще не обновляется, когда вы пытаетесь получить к ним доступ.

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