查找以某些字符串

时间:2015-05-01 10:36:35

标签: c# asp.net textbox controls findcontrol

我在ASP.NET页面中有许多TextBox es,他们的ID以某些字符串xyz开头(例如:xyz1xyz11 {{} 1})。我知道xyz999方法,但只能通过FindControl的完整ID找到。

如何在页面上找到ControlID类似的控件?

2 个答案:

答案 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);
    }
}