2011-11-14 35 views
0

我想遍歷控件列表來確定哪些複選框被選中或不在ASP.NET網頁中。如果複選框被打破,那麼其文本將被添加到列表 ,但是;迭代到來會返回一個錯誤或者沒有找到複選框類型的控件(在AJAX tabcontainer中有10個複選框)。 這是我的代碼的副本。asp.net遍歷控件的形式

private void populateServiceList() 
    { 
     foreach (CheckBox checkbox in this.Form1.Controls.OfType<CheckBox>()) 
     { 

     if (checkbox.Checked == true) 
     { 
      this.services.Add(checkbox.Text); 
     } 
    } 
} 

回答

0

編輯@ 6:07 CST:

使用此您populateServiceList內()方法:

 List<String> temp = new List<string>(); 

     foreach (Control ctrl in TabContainer1.Controls) 
     { 
      if (ctrl.HasControls()) 
      { 
       foreach (Control subctrl in ctrl.Controls) 
       { 
        CheckBox TControl = subctrl as CheckBox; 
        if (TControl != null && TControl.Checked) 
        { 
         temp.Add(TControl.Text); 
        }       
       } 
      } 
     } 

enter image description here

+0

asp.net,而不是Windows窗體。他將很難在頁面的任何位置找到System.Windows.Forms.Checkbox。 –

+0

必須考慮到所有控件都沒有文本值。 – MasterP

+0

它似乎沒有識別和檢查複選框。 – MasterP

0

你可能有複選框不在窗體的掃描根目錄。

通常我們使用遞歸函數掃描容器內的所有元素。

0

請考慮更新您的AJAX選項卡控件,以改爲使用CheckboxList控件。

如果這確實不是一個選項,請將this.Form1.Controls更改爲直接父控件的控件集合用於複選框而不是整個表單。

+0

this.Form1.Controls扔了一個錯誤。無法投射「System.Web.UI.LiteralControl」類型的對象來鍵入「System.Web.UI.WebControls.CheckBox」。 – MasterP

+1

@MasterP - 你看過我的回答還是隻看了一下?我無處推薦刪除.OfType()檢查 –