我在ASP.NET页面中有许多TextBox
es,他们的ID
以某些字符串xyz
开头(例如:xyz1
,xyz11
{{} 1})。我知道xyz999
方法,但只能通过FindControl
的完整ID
找到。
如何在页面上找到Control
与ID
类似的控件?
答案 0 :(得分:6)
您可以添加Extension Method
以获取this answer中提到的所有文本框,然后只需使用您需要的ID进行过滤: -
var alltextBoxes = this.Page.FindControls<TextBox>(true).Where(x => x.ID.Contains("xyz"));
如果您希望以特定文字开头的所有ID都显示xyz
,那么您也可以使用String.StartsWith,因为文本框ID是字符串: -
.Where(x => x.ID.StartsWith("xyz"));
答案 1 :(得分:1)
您必须在页面内递归循环才能找到与您的字符串匹配的TextBox控件:
List<TextBox> _TextBoxes;
protected void Page_Load(object sender, EventArgs e)
{
_TextBoxes = new List<TextBox>();
FindTextBoxes(Page, "xyz1");
}
private void FindTextBoxes(Control parent, string startsWith)
{
if(parent.GetType()==typeof(TextBox) && parent.ID.StartsWith(startsWith))
{
_TextBoxes.Add(parent as TextBox);
}
foreach (var c in parent.Controls)
{
FindTextBoxes(c, startsWith);
}
}