web usercontrols

wani

Grünschnabel
hallo
bin grad dabei eine Oberfläche mittls user controls zu erstellen, für eine asp.net Anwendung.

hab auch schon die nötigen ascx Seiten desingt und steh jetzt vor dem Problem wie ich die Dinger in der Codebehind datei der aspx Seite Aufruf bzw verwenden kann.

wer weiss Rat und kann mir da helfen
 
Hallo wani. ;)

Um WebUserControls einzubinden gibt es 2 Möglichkeiten.

1.
Über die LoadControl Methode kannst du dir eine Instanz des UserControls erstellen, und dann einem Container (Page, PlaceHolder,..) zuweisen.

Code:
MyControl myControl1 = (MyControl)LoadControl("TempControl_Samples1.cs.ascx");
Controls.Add(myControl1);

2.
Direkt in der ASPX Seite kannst du es einbinden. Dazu musst du zuerst das UserControl 'registrieren'

Code:
<%@ Register TagPrefix="mc" TagName="MyControl1" Src="myfirstcontrol.ascx" %>

Danach kannst es wie ein normales WebControl einbinden.
Code:
<mc:MyControl1 runat="server" id="blubb" />

In der CodeBehind-Datei kannst du es dann darauf zugreifen indem du eine Membervariable vom selben Typ und Namen erstellst.

Code:
protected MyControl1 blubb;

Die erste Version ist ein wenig dynamisch, du kannst in deinem Code besser kontrollieren wann welches Controls eingeblendet wird.

MfG,
Alex

p.s.:
Bissl auf die Groß-/Kleinschreibung achten ;) (siehe Netiquette, und roter Kasten beim Schreiben eines Beitrags.)
 
aha danke
Das hört sich ned so schwer an, werde es morgen in da Firma ausprobieren. Falls es dann noch Probleme gibt werde ich mich wieder hier melden.

mfg wani
 
morgen

Also ich hab jetzt mal die erste Variante ausprobiert, wo ich nur das "MyControl myControl1 = (MyControl)LoadControl("TempControl_Samples1.cs.ascx");
Controls.Add(myControl1); " eingegeben hab. Aber das funkt ned, auf der ascx Seite befinden sich grad mal 2 Buttons.

Als Fehlermeldung bekomm ich "Das Steuerelement ' _ctl0_Button1" des Typs Button mus in einem Fortag mit runat=server positioniert werden.

Ich hab nur die zwei Zeilen in die aspx.cs Page geschreiben, muss ich auch direkt was in die aspx Seite schreiben um mein Control anzuzeigen
 
Hallo.

WebControls wie der ASP:Button müssen, wie andere Formularelemente auch, in einem Form-Element liegen, und dieses muss ausserdem noch das Attribut runat="server" besitzen.

webform.aspx
Code:
..
<body>
<form runat="server" id="mainForm">
<!-- hier müsste das Control geladen werden .. -->
<ASP:Placeholder id="phControls" runat="Server" />
</form>
</body>
..

webform.aspx.cs
Code:
...
protected Placeholder phControls;
...
MyControl myControl1 = (MyControl)LoadControl("TempControl_Samples1.cs.ascx");
phControls.Add(myControl1);
...
 
Zurück