C# 对于每个循环,返回空白
在我的C# 对于每个循环,返回空白,c#,asp.net,webforms,aspwizard,C#,Asp.net,Webforms,Aspwizard,在我的asp:Wizard的最后一步中,我有一个for-each循环,它应该列出每个文本框中不为null的所有文本。文本框位于asp:Wizard的第二个步骤中,它们放置在asp:Panel控件中,在同一步骤中使用复选框可使控件可见或不可见。以下是循环的事件: protected void Wizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e) { var requested = this
asp:Wizard
的最后一步中,我有一个for-each循环,它应该列出每个文本框中不为null的所有文本。文本框位于asp:Wizard
的第二个步骤中,它们放置在asp:Panel
控件中,在同一步骤中使用复选框可使控件可见或不可见。以下是循环的事件:
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();
}
protectedvoid向导1\u finishbutton单击(对象发送方,向导导航目标)
{
请求的var=this.Controls.OfType()
.Where(txt=>!string.IsNullOrWhiteSpace(txt.Text));
var sb=新的StringBuilder();
foreach(请求中的var文本框)
{
sb.Append(textBox.Text);//添加文本而不是文本框
sb.Append(“”;//添加换行符使其看起来漂亮
}
Label1.Text=sb.ToString();
}
如果我使用循环运行应用程序,无论我填写什么,我的标签都将返回空白。标签当前处于第3步
<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>
它们被放置在asp:Panel中
使用this.Controls
可以查找直接存在于表单上而不在面板内的文本框
您应该修改查询以从面板获取控件,如:
var requested = yourPanel.Controls.OfType<TextBox>()
.Where(txt => !string.IsNullOrWhiteSpace(txt.Text));
var requested=yourPanel.Controls.OfType()
.Where(txt=>!string.IsNullOrWhiteSpace(txt.Text));
其中yourplane
是您的asp:Panel
它们被放置在asp:Panel中
使用this.Controls
可以查找直接存在于表单上而不在面板内的文本框
您应该修改查询以从面板获取控件,如:
var requested = yourPanel.Controls.OfType<TextBox>()
.Where(txt => !string.IsNullOrWhiteSpace(txt.Text));
var requested=yourPanel.Controls.OfType()
.Where(txt=>!string.IsNullOrWhiteSpace(txt.Text));
其中
yourPanel
是asp:Panel
的id。如果控件嵌套在其他控件中,则希望递归查找该控件。这里是helper方法
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);
}
如果控件嵌套在其他控件中,则希望递归查找该控件。这里是helper方法
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);
}
文本框是页面的直接子控件还是在面板中?如果是,您是否尝试过var request=somePanel.Controls.OfType.…
文本框是页面或面板的直接子控件?如果是,您是否尝试过var requested=somePanel.Controls.OfType…..