Usercontrol zu Panel hinzufügen und Daten anzeigen

11/03/2010 - 22:09 von Franke Mueller | Report spam
Hi, ich habe folgendes Problem. Ich habe auf meiner Webform einen Panel wo
ich Codebehind ein Customcontrol (Webbenutzersteuerelement) hinzufügen
möchte.
Mit Panel.Controls.add klappt es ja nicht. Habe jetzt im Internet folgendes
gefunden.
Me.Panel.Controls.Add(Page.LoadControl("Ctrl_Test.ascx"))

ist das richtig?
Wenn ich nun das ganze 5 mal mache, wie greife ich auf die einzelnen
Controls zu?
Das Customcontrol besteht aus einer Textbox und einer Checkbox. Bevor oder
nach dem hinzufügen (zum Panel) möchte ich noch gerne (Werte kommen aus
einer Datenbank) die Values der Textbox und Checkbox füllen.
Könnt ihr mir da weiterhelfen?
 

Lesen sie die antworten

#1 Thomas Bandt
11/03/2010 - 23:18 | Warnen spam
Am 11.03.10 22:09, schrieb Franke Mueller:
Hi, ich habe folgendes Problem. Ich habe auf meiner Webform einen Panel
wo ich Codebehind ein Customcontrol (Webbenutzersteuerelement)
hinzufügen möchte.
Mit Panel.Controls.add klappt es ja nicht. Habe jetzt im Internet
folgendes gefunden.
Me.Panel.Controls.Add(Page.LoadControl("Ctrl_Test.ascx"))

ist das richtig?



Probiers doch aus? :-)

Wenn ich nun das ganze 5 mal mache, wie greife ich auf die einzelnen
Controls zu?
Das Customcontrol besteht aus einer Textbox und einer Checkbox. Bevor
oder nach dem hinzufügen (zum Panel) möchte ich noch gerne (Werte kommen
aus einer Datenbank) die Values der Textbox und Checkbox füllen.
Könnt ihr mir da weiterhelfen?



Pseudocode:

public partial class Xyz : Control
{
public void SetTextBoxValue(string value)
{
TextBox1.Text = value;
}

public void GetTextBoxValue()
{
return TextBox1.Text;
}

}

var control = (Xyz)Page.LoadControl("xyz.ascx");
control.ID = "Xyz1";
control.SetTextBoxValue("Hallo Welt");
Panel1.Controls.Add(control);

Wichtig: Du musst die Controls bei jedem einzelnen Aufruf
neu erzeugen und hinzufügen. Damit das Binding des View-
States klappt, solltest du das so früh wie möglich im Page
Lifecycle tun (OnInit z.B.).

Das Auslesen kannst du dann z.B. so gestalten:

var control = (Xyz)Panel1.Controls[0];
var textBoxValue = control.GetTextBoxValue();

Gruß, Thomas [MVP ASP/ASP.NET]
http://www.69grad.de

Ähnliche fragen