Laden...

dynamische Erstellung von Buttons und Textfeldern

Erstellt von Knollo vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.034 Views
K
Knollo Themenstarter:in
20 Beiträge seit 2006
vor 17 Jahren
dynamische Erstellung von Buttons und Textfeldern

Hallo,

Ich versuche in .Net Button und Textfelder dynamisch über eine for- Schleife im Script zu erstellen. Dies gelingt mir auch indem ich HTML-Elemente in einem Label ausgebe. Aber ich schaffe es dann nicht über das Script auf diese Elemente zu zu greifen. Kann mir jemand einen Tip geben was ich falsch mache. Oder wie man dieses Prinzip in .Net über C# umsetzen kann.

Vielen Dank schon mal

Knollo

2.082 Beiträge seit 2005
vor 17 Jahren

Hallo Knollo,

auf Webbasis ist das etwas schwer. Ist denn die Maximale Anzahl dynamisch? Wenns nicht allzu viele Elemente sind, würde ich sie im designer erstellen und dann einfach auf das Visible-Property zugreifen.

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

1.130 Beiträge seit 2005
vor 17 Jahren

Du kannst mit Hilfe des Placeholders dynamisch Controls hinzufügen.

<asp:Placeholder id="plhNewControls" runat="Server"/>

for(int i = 0; i < 10; i++)
{
   TextBox txt = new TextBox();
   txt.Text = "Bla";
   txt.ID = "txt" + i;

  plhNewControls.Controls.Add(txt);
}

Hab den Quellcode nicht getestet, sollte aber so funktionieren. Wichtig für Dich ist noch, dass Du nach einem Postback die Controls erneut hinzufügen musst, da diese im Panel nicht erhalten bleiben.

K
Knollo Themenstarter:in
20 Beiträge seit 2006
vor 17 Jahren

Original von Kai.
Du kannst mit Hilfe des Placeholders dynamisch Controls hinzufügen.

<asp:Placeholder id="plhNewControls" runat="Server"/>  
  
for(int i = 0; i < 10; i++)  
{  
   TextBox txt = new TextBox();  
   txt.Text = "Bla";  
   txt.ID = "txt" + i;  
  
  plhNewControls.Controls.Add(txt);  
}  
  

Danke der Quellcode funktioniert aber wie kann ich nun auf die textboxen zugreifen und den Inhalt verändern?

1.130 Beiträge seit 2005
vor 17 Jahren

Dazu benötigst Du die FindControl() Methode. Diese sucht unterhalb der aktuellen Control-Ebene nach dem Control mit der angegeben ID.

In Deinem Fall müsstest Du die FindControl() Methode des Placeholders verwenden, also:


TextBox txt = (TextBox) plhNewControls.FindControl("txt1")
if(txt != null)
{
   txt.Text = "Test1";
}

Alternativ kannst Du Dir auch alle vorhandenen Controls des Placeholders zurückgeben lassen und dann diese entsprechend verarbeiten.

Wenn Du lieber rekursiv nach einem Control suchen möchtest, dann hilft Dir der Link:
plhNewControls

K
Knollo Themenstarter:in
20 Beiträge seit 2006
vor 17 Jahren

Super, danke nur noch eine Frage, wenn ich über diesen Weg Buttons erstelle, wie kann ich diesen Events zuweisen? Danke nochmals

1.130 Beiträge seit 2005
vor 17 Jahren

klar:


Button btt = new Button();
btt.Click += new EventHandler(btt_Click);

Und dazu der entsprechende EventHandler:



void btt_Click(object sender, EventArgs e)
{
        //Mach irgendwas
}

K
Knollo Themenstarter:in
20 Beiträge seit 2006
vor 17 Jahren

kann man dabei auch mit den CommandName arbeiten

1.130 Beiträge seit 2005
vor 17 Jahren

Das geht auch mit OnCommand. Schau' Dir doch dazu einfach mal das Intellisense des Controls an.

K
Knollo Themenstarter:in
20 Beiträge seit 2006
vor 17 Jahren

Danke hab ich gemacht, hääte ich eigentlich auch selber drauf kommen können 😉

Vielen Dank nochmal

T
147 Beiträge seit 2005
vor 17 Jahren

Hallo, genau dass habe ich eigentlich gesucht aber wie kann ich das ganze mit einem UserControl machen?

Ich habe eine Instanz meines user Controls erstellt und möchte dass nun in meiner Seite anzeigen wie mache ich dass ich habe Folgendes schon probiert


Panel1.Controls.Add(myControlInstance);

und...


PlaceHolder1.Controls.Add(myControlInstance);

Irgendwie zeigt er das Control nicht an auch wenn ich abgefragt habe ob postback ist oder nicht, ich sehe meine Instnaz des UserControls nicht!! 🙁

Hat jemand ne idee für micht