Controls durchlaufen und ändern

18/01/2008 - 09:41 von WolfgangH | Report spam
Hallo NG,
auf einer aspx-Seite möchte ich die Labels label1, label2,.. label25 neu
beschriften gemàß dem Inhalt eines im Programm vorhandenen String-Arrays.

Wie kann ich alle Labels mit den mir bekannten Namen bearbeiten,
ohne jedes explizit anzugeben:
label1.Text=a_text[1];
label1.TollTip=a_ttip[1];
...

Geht das über Controls? wie?

Danke
Wolfgang
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
18/01/2008 - 10:07 | Warnen spam
Hallo Wolfgang,

"WolfgangH" schrieb:

auf einer aspx-Seite möchte ich die Labels label1, label2,.. label25 neu



wenn die Labels wirklich so bezeichnet sind, könntest Du einfach eine Schleife
in der Art:

For i = 1 To 25
CurrentLabel = CType( Me.FindControl( "Label" & i ), Label )
CurrentLabel.Text = ...
Next

verwenden. Anderenfalls gehts auch über die Controls Collection, dann musst
Du allerdings jedes Control durchlaufen und prüfen, ob es ein Label ist.

Dim CurrentLabel As Label
Dim CurrentControl As Control

For Each CurrentControl In <ContainerControl>.Controls
If TypeOf( CurrentControl ) Is Label Then
CurrentLabel = CType( CurrentControl, Label )
CurrentLabel.Text = ...
End if
Next

<ContainerControl> ist ein Control in deiner Webform, dass die Labels beinhaltet,
also bspw. so:

<asp:Panel ID="Container" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label 1" /><br />
<asp:Label ID="Label2" runat="server" Text="Label 2" /><br />
<asp:Label ID="Label3" runat="server" Text="Label 3" /><br />
</asp:Panel>

Geht zwar auch anders, so ists aber einfacher :)

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen