2009-08-16 2 views
2

Если у меня есть метка и текстовое поле и меткаДоступа к Ярлык из Textbox через AssociatedControlID

<asp:Label ID="Label1" runat="server" Text="Name" AssociatedControlID="txtName"></asp:Label> 
<asp:TextBox ID="txtName" runat="server" CssClass="textbox"></asp:TextBox> 

Из кода позади, это Возможный доступ к элементам управления, которые перечисляют в текстовом поле в качестве связанного элемента управления.

ответ

3

Возможно, но, возможно, не так просто, как хотелось бы. В коллекции нет нигде, где говорится, что «все это элементы управления с этим значением AssociatedControlID». Вам понадобится loop over all the controls in the page recursively и проверьте свойство AssociatedControlID, если это метка.

Что вы пытаетесь достичь? Я знаю, что вы специально спросили о том, как это сделать, но если конечный результат заключается в том, что вы пытаетесь манипулировать пользовательским интерфейсом, я бы рассмотрел использование jQuery, так как с помощью одной строки javascript вы могли бы выбрать все элементы на странице, которая была for = "txtName".

0

Вы можете сделать это с помощью LINQ.

var label = Page.Controls 
       .Cast<Control>() 
       .SingleOrDefault(c => c.GetType() == typeof(Label) && 
             ((Label)c).AssociatedControlID == "txtName"); 

Если у вас есть несколько элементов управления, связанных с этим конкретным текстовым полем, а затем использовать Where() вместо SingleOrDefault().

Смежные вопросы