2010-12-21 5 views
2

Hy,Wie kann ich mit C# den Inhalt von dynamisch erstellten Textfeldern lesen?

Ich habe einige dynamische Textfelder mit Standardinhalt erstellt.

Weiß jemand, wie kann ich den Inhalt dieser Textfelder lesen (angenommen, dass Benutzer den Standardinhalt geändert hat), wenn ich einen Knopf drücke?

Vielen Dank.

Jeff

aktualisieren

Dies ist, wie ich die Textfelder erschaffe:

foreach (string name in listOfNames) 
{ 
    TextBox tb = new TextBox(); 
    tb.Text = name; 
    tb.BorderStyle = BorderStyle.None; 
    tb.BorderWidth = 0; 
    tb.Font.Name = "Arial"; 
    tb.Font.Size = 8; 
} 
+4

WinForms, WPF, ASP.NET, Silverlight, XNA, Windows Phone 7, Xbox 360, Zune, ... ???? Versuchen Sie, etwas genauer zu sein, es gibt Textfelder und Schaltflächen überall. Definieren Sie auch * dynamic *. Wie diese Textfelder erstellt werden, stellen Sie idealerweise ein Code-Snippet bereit. –

+0

Welche Technologie verwenden Sie? ASP.NET? Gewinn-Formulare? WPF/Silverlight? – Shimmy

+0

Zusätzlich zu Darins Kommentar, wie wurden sie hinzugefügt? Kennst du die Namen? –

Antwort

3

Die spezifische je nach Technologie variieren Sie verwenden. Das Konzept würde jedoch sehr ähnlich bleiben, obwohl es für ASP.NET etwas interessanter ist.

WinForms/WPF/Silverlight

Pflegen Sie eine Liste der dynamisch erstellten Textfelder und wenn die Taste gedrückt ist, können Sie durch die Liste der Textfelder ausführen und die Text Eigenschaft lesen Sie die Benutzereingabe zu erhalten.

ASP.NET - Nach dem Tag-Update scheint dieser Abschnitt für Ihre Anforderung am besten geeignet.

Für ASP.NET müssen Sie die Textfelder in einer Überschreibung der OnInit-Methode erstellen, dies sollte bei jedem Postback passieren. Dann können Sie im Ereignis Button.Click die Benutzereingabe aus den Textfeldern lesen, die Sie in der OnInit-Funktion erstellt haben. Sie müssen sicherstellen, dass die Steuerelemente mit demselben ID auf jedem Post zurück erstellt werden.

+0

+1 - für "Gleiche ID" ... ohne eine konsistente ID, dynamische Steuerelemente werden angezeigt, aber alle Arten von Problemen auftreten (wie Ereignisse, die feuern Sie nur, wenn Sie zweimal auf das Element klicken). –

2

Sie müssen sicherstellen, dass die Textfelder sind auf jedem Postback neu erstellt.

Wenn Sie sie nicht erneut erstellen, können Sie nicht auf ihre Eigenschaften oder Ereignisse zugreifen.

Der beste Ort zum Erstellen dynamischer Steuerelemente ist die Seite Init Event-Handler.

Ich empfehle das Lesen auf der ASP.NET page life cycle.


Update (folgende aktualisierte Frage)

Stellen Sie sicher, eine ID einzustellen (und eine andere, zu diesem) für die Textfelder, so dass Sie später auf sie verweisen.

Ich kann nicht sehen, wo Sie diese Steuerelemente auf der Seite entweder hinzufügen.

+0

Ich dachte immer überschreiben CreateChildControls war der beste Ort für diese .. –

+0

@Richard Freund - Ich habe das nie getan, aber dann wieder könnte ich falsch liegen. Kannst du mich auf Artikel hinweisen, die das sagen? – Oded

+0

Ich weiß, Erstellen in Init funktioniert, aber viele Steuerelemente beruhen auf EnsureChildControls(), die wiederum ChildControlsCreated betrachtet, die wiederum CreateChildControls aufruft. siehe http://www.singingeels.com/Articles/Dynamically_Created_Controls_in_ASPNET.aspx –

0

Request.Form ist eine Sammlung von Schlüssel-Wert-Paaren, die alle Daten darstellt, die von der ASP.NET-Anforderung zurückkommen. Wenn Sie darauf zugreifen, können Sie einen beliebigen Wert abrufen, unabhängig davon, ob das Steuerelement im ASPX-Code angegeben oder im Code hinter der Datei dynamisch erstellt wurde.

Sie können ihre Werte auch automatisch in sie zurückversetzen, wenn Sie sie während des Init-Teils des Seitenlebenszyklus neu erstellen. Wenn Sie dies tun, werden ihre Werte festgelegt, wenn ASP.NET den Status der Seite neu erstellt und die Werte aus dem Formular anwendet.

0

Sie sollten in der Lage sein, auf sie wie ein normales Steuerelement zuzugreifen, Sie müssen nur einen Verweis auf das Steuerelement erhalten. Denken Sie daran, alle Steuerelemente für jeden Postback neu zu erstellen.

this ist ein nützlicher Artikel über dynamische Steuerelemente in asp.net

Verwandte Themen