【问题标题】:How to find all controls in a multi steps Wizard?如何在多步骤向导中找到所有控件?
【发布时间】:2012-11-02 14:14:42
【问题描述】:

我想通过多个步骤在 asp:wizard 中自动收集所有信息(即控制值)。怎么做? 我找到了一个有趣的链接,但它似乎无法正常工作:只是有关当前步骤的一些信息:http://msdn.microsoft.com/en-us/library/yt340bh4(v=vs.80).aspx

foreach (Control c in Page.Controls)
{
    foreach (Control childc in c.Controls)
    {
        if (childc is Label)
        {
            lblTitre0.Text += ((Label)childc).Text + ",";
        }
    }
}

lblTitre0 (asp:label) 中无数据显示

【问题讨论】:

  • 有什么原因你不能只使用内置的FindControl()(例如controlFound = c.FindControl(id);
  • 是的,我的目标是获取(即列出)所有控件,而无需一一获取它们,并附上它们的名称(即 id),因为它们在我的向导中很多。跨度>

标签: c# asp.net controls wizard


【解决方案1】:

试试这个

<asp:Wizard runat="server" ID="mainWizard">
 <WizardSteps>
  <asp:WizardStep>
   <asp:Label runat="server" ID="lbl1" Text="Label one" />
  </asp:WizardStep>
  <asp:WizardStep>
   <asp:Label runat="server" ID="lbl2" Text="Label two" />
  </asp:WizardStep>
 </WizardSteps>
</asp:Wizard>
<asp:Button runat="server" ID="btnGetall" Text="Get All controls" 
            OnClick="btn_Click" />
<br />
<asp:Label runat="server" ID="lblResult" />

protected void btn_Click(object sender, EventArgs e)
{
   foreach (WizardStep step in mainWizard.WizardSteps)
   {
     foreach (Control cntrl in step.Controls)
     {
        if (cntrl is Label)
          lblResult.Text += ((Label)cntrl).Text + ",";
     }
    }
}

【讨论】:

  • 谢谢你@yogi!这是向导的正确方法。我一点也不在乎。还有一个问题:是否可以在一条指令中针对所有控件类型?例如,DropDownList、RadioButtonList、TextBox 不仅适用于 Labels?
猜你喜欢
  • 2014-08-30
  • 1970-01-01
  • 2018-03-28
  • 1970-01-01
  • 1970-01-01
  • 2015-04-09
  • 1970-01-01
  • 1970-01-01
  • 2014-02-03
相关资源
最近更新 更多