Ich weiß, dass diese Frage wurde tausend Mal gefragt, und ich habe damit zuvor gekämpft, aber aus irgendeinem Grund kann ich nicht erreichen, was ich erreichen möchte ... Ich Sie haben einen dynamisch hinzugefügten LinkButton, der beim Anklicken dynamisch ein Steuerelement (in diesem Beispiel ein Textfeld) zum selben Panel hinzufügt. Die Absicht ist, so viele Steuerelemente hinzuzufügen, wie der LinkButton geklickt wurde (d. H. Ich klicke einmal darauf, ein Feld, dann ein weiterer Klick gibt mir 2 Felder, ein weiterer Klick fügt ein drittes hinzu). In dem folgenden Code verwende ich das aktuelle Datum und die Uhrzeit serialisiert, um eine eindeutige ID für jedes Textfeldsteuerelement zu erstellen.ASP.NET dynamisch erstellte Steuerelemente und Postback
Wenn ich den Code ausführen, wird durch Klicken auf "Filter hinzufügen" ein neues Textfeld erstellt, aber nach dem erneuten Klicken wird ein neues erstellt und das vorherige gelöscht. Stattdessen möchte ich die vorherige Textbox sowie alle darin enthaltenen Daten beibehalten.
Ihre Hilfe wird geschätzt.
Im aspx:
<asp:Panel ID="pnlFilter" runat="server">
</asp:Panel>
In den aspx.cs:
protected void Page_Init(object sender, EventArgs e)
{
LinkButton lb = new LinkButton();
lb.ID = "lbAddFilter";
pnlFilter.Controls.Add(lb);
lb.Text = "Add Filter";
lb.Click += new EventHandler(lbAddFilter_Click);
}
void lbAddFilter_Click(object sender, EventArgs e)
{
TextBox tb = new TextBox();
tb.ID = "tb" + DateTime.Now.ToBinary().ToString();
pnlFilter.Controls.Add(tb);
}
Was würden Sie in einer Situation tun, in der Fragebögen (Umfragen) in einer bestimmten Anwendung erstellt und über einen Webservice präsentiert werden die Website holt eine Umfrage und rendert die Felder dafür? in diesem Fall ist die dynamische Erstellung von Inhalten die einzige geeignete Option nein? – Sander
Ja, das dynamische Erstellen des Inhalts ist in Ordnung, aber es muss nicht inkrementell sein, wie ich es versucht habe; Ich nehme an, dass Ihr Web-Service jedes Mal alle Ergebnisse zurückgibt. In diesem Fall haben Sie jedes Mal alle Ergebnisse gelöscht. Bei Verwendung von Viewstate und Caching sollte Ihre Leistung ziemlich gut sein. –
Du bist ein Genie. Ich habe versucht, dasselbe wie das OP zu erreichen, aber dies hat mir klar gemacht, dass ich statt mehrerer Steuerinstanzen nur das neue Steuerelement in einem modalen Fenster anzeigen und in ihrem modalen "Speichern" speichern und in den Datenspeicher übernehmen kann dann laden Sie das auf die Seite sehr leicht. Tausend Dankeschöns. Ich habe 3 Tage und den ganzen heutigen Abend damit verbracht, dieses herauszufinden. –