首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于每个循环,返回空白。

问对于每个循环,返回空白。
EN

Stack Overflow用户
提问于 2013-10-02 21:10:53
回答 2查看 101关注 0票数 0

在我的asp:Wizard的最后一步中,我有一个for每个循环,它应该列出每个文本框中不为空的所有文本。textboxes位于asp:Wizard的第二步,它们被放置在asp:Panel控件中,这些控件在同一步骤中使用复选框时会变得可见或不可见。下面是循环的事件:

代码语言:javascript
复制
protected void Wizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e)
    {
        var requested = this.Controls.OfType<TextBox>()
                         .Where(txt => !string.IsNullOrWhiteSpace(txt.Text));

        var sb = new StringBuilder();
        foreach (var textBox in requested)
        {
            sb.Append(textBox.Text); //Add the text not the textbox
            sb.Append("</br>"); //Add a line break to make it look pretty
        }
        Label1.Text = sb.ToString();

    }

如果我使用循环运行应用程序,我的标签将返回空白,不管我填写了什么。标签目前正处于第三步。

代码语言:javascript
复制
<asp:WizardStep ID="WizardStep3" runat="server" AllowReturn="false" Title="Step 3" StepType="Complete">
        <asp:Label ID="Label1" runat="server" Text="This text will display when I run the application without the foreach loop"></asp:Label>
</asp:WizardStep>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-02 21:14:14

它们被放置在asp:面板中。

使用this.Controls,您将查找直接存在于窗体上的TextBoxes,而不是面板中的表单。

您应该修改查询以从面板获取控件,如下所示:

代码语言:javascript
复制
var requested = yourPanel.Controls.OfType<TextBox>()
                         .Where(txt => !string.IsNullOrWhiteSpace(txt.Text));

其中yourPanel是asp:Panel的id

票数 2
EN

Stack Overflow用户

发布于 2013-10-02 21:38:13

如果控件嵌套在其他控件中,则希望递归地查找该控件。下面是帮助方法。

代码语言:javascript
复制
public static Control FindControlRecursive(Control root, string id)
{
   if (root.ID == id) 
      return root;

   return root.Controls.Cast<Control>()
      .Select(c => FindControlRecursive(c, id))
      .FirstOrDefault(c => c != null);
}

用法

代码语言:javascript
复制
var testbox = FindControlRecursive(Page, "NameOfTextBox");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19146896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档