2011-06-07 12 views
1

我認爲這將工作。但它不起作用。它從來沒有進入如果(C是HtmlInputCheckBox)找到所有的HtmlInputCheckBox控件與master.pages遞歸

private string GetAllCheckBoxes(ControlCollection controls) 
{ 
    StringBuilder sb = new StringBuilder(); 

    foreach (Control c in controls) 
    { 
     if (c.HasControls()) 
     { 
      GetAllCheckBoxes(c.Controls); 
     } 
     else 
     { 
      if (c is HtmlInputCheckBox) 
      { 
       CheckBox cb = c as CheckBox; 
       if (cb.Checked) 
       {         
        sb.Append(cb.ID + "_1");         
       } 
       else 
       { 
        sb.Append(cb.ID + "_0"); 
       } 
      } 
     } 
    } 
    return sb.ToString(); 

} 

更新:c是拋出一些錯誤。

Parent = {InnerText = '((System.Web.UI.HtmlControls.HtmlContainerControl)(((System.Web.UI.HtmlControls.HtmlGenericControl)(c.Parent)))).InnerText' threw an exception of type 'System.Web.HttpException'} 
+0

ü沒有使用斷點跟蹤代碼?按照你的預期,是'c'? – 2011-06-07 04:45:36

+0

以及它似乎是在拋出某種錯誤。 Parent = {InnerText ='((System.Web.UI.HtmlControls.HtmlContainerControl)(((System.Web.UI.HtmlControls.HtmlGenericControl)(c.Parent))))。InnerText'拋出了'System。 Web.HttpException'} – user713813 2011-06-07 04:52:45

+0

你能告訴我更多你的代碼嗎?你如何填寫'controls'? – 2011-06-07 05:31:57

回答

0

HtmlInputCheckBoxCheckBox屬於不同類別,不從其他繼承。對其中一個進行的is測試不適用於另一個,反之亦然。聽起來像控制可能是CheckBox的實例,所以更改有條件的:

if (c is CheckBox)