2014-03-05 25 views
0

请帮忙。我需要从我的.net向导控件中获得所有问题和可能答案的列表。这里是我的尝试:在向导C中获取每个RadioButtonList的ListItem#

foreach (WizardStep step in Wizard1.WizardSteps) 
     { 
      foreach (Control c1 in step.Controls) 
      { 
       if (c1 is Label) 
       { 
        Label1.Text += ((Label)c1).Text + "<br/><br/>"; 
       } 

       //foreach (Control c2 in step.Controls) 
       //{ 
       // foreach (RadioButtonList rbl in step.Controls) 
       // { 
       //  foreach (ListItem li in Items) 
       //  { 
       //   Label1.Text += li.Text.ToString() + "<br/><br/>"; 
       //  } 
       // } 
       //} 
      } 
     } 

此代码的作用是,它得到所有的问题。但是,当我取消评论位以获得可能的单选按钮列表答案时,它会失败。我得到一个错误:“无法转换'System.Web.UI.LiteralControl'类型的对象来键入'System.Web.UI.WebControls.RadioButtonList'”。

我可以理解为什么发生这种情况,但我不知道如何解决。非常感谢帮助。

最亲切的问候 保罗

+1

你的评论代码没有多大意义,你有一个'Control'的foreach,然后对'c2'对象做任何事情,你也做'RadioButtonList'的foreach,并且不对'rbl'对象做任何事情。你可以更新结构标记吗? – Starscream1984

回答

1

试试这个。

foreach (WizardStep step in Wizard1.WizardSteps) 
    { 
     foreach (Control c1 in step.Controls) 
     { 
      if (c1 is Label) 
      { 
       Label1.Text += ((Label)c1).Text + "<br/><br/>"; 
      } 

      if(c1 is RadioButtonList) 
      { 
       foreach (ListItem li in ((RadioButtonList)c1).Items) 
       { 
       Label1.Text += li.Text + "<br/><br/>"; 
       } 
      } 
     } 
    } 
+0

我得到一个编译时错误:'System.Web.UI.Control'没有包含'Items'的定义,也没有扩展方法'Items'接受类型为'System.Web.UI.Control'的第一个参数可能是找到了(你是否缺少使用指令或程序集引用?) – SQLGolfer

+0

忘记将c1转换为RadioButtonList,现在它编译正确。 – alexqc

+0

而且它打印罚款的文本ListItems问题是在li.Text.ToString()它应该是li.Text – alexqc

0

我认为您需要更多地关注您正在循环的内容以及您所引用的属性。我在猜测,因为我不知道你的控制结构,但我认为沿着这些线会更多我期望看到的:

 foreach (WizardStep step in Wizard1.WizardSteps) 
     { 
      foreach (Control c1 in step.Controls) 
      { 
       if (c1 is Label) 
       { 
        Label1.Text += ((Label)c1).Text + "<br/><br/>"; 
       } 
       else 
       { 
        foreach (Control c2 in c1.Controls) 
        { 
         if (c2 is RadioButtonList) 
         { 
          RadioButtonList rbl = (RadioButtonList)c2; 

          foreach (ListItem li in rbl.Items) 
          { 
           Label1.Text += li.Text.ToString() + "<br/><br/>"; 
          } 
         } 
        } 
       } 
      } 
+0

谢谢你。它不会做我需要的。它仍然只打印出所有标签控件的文本属性。 ListItem文本属性被忽略。我在“foreach(c1.Controls中的Control c2)”中设置了一个断点,但是当我尝试通过例程跳过RadioButtonList/ListItem代码时。 – SQLGolfer

+0

我假设你已经嵌套控制了,因为你有的每个''语句都有 - 我从正确的答案中看到它不是这种情况 – Starscream1984

相关问题