Wiem, że to pytanie zostało zadane tysiące razy, i już wcześniej z nim walczyłem, ale z jakiegoś powodu nie mogę osiągnąć tego, co chcę osiągnąć ... mieć dynamicznie dodawany LinkButton, który po kliknięciu będzie dynamicznie dodawał kontrolkę (w tym przykładzie pole tekstowe) do tego samego panelu. Celem jest ciągłe dodawanie tylu kontrolek, ile razy kliknięto LinkButton (tj. Kliknę raz, jedno pole, kolejne kliknięcie da mi 2 pola, kolejne kliknięcie doda 3). W poniższym kodzie używam bieżącej daty i czasu zserializowanych w celu utworzenia niepowtarzalnego identyfikatora dla każdego formantu pola tekstowego.ASP.NET dynamicznie utworzone sterowanie i odświeżenie
Po uruchomieniu kodu kliknięcie "Dodaj filtr" spowoduje wygenerowanie nowego pola tekstowego, ale po ponownym kliknięciu spowoduje utworzenie nowego, a następnie pozbędzie się go. Zamiast tego chcę uporać się z poprzednim polem tekstowym oraz wszelkimi danymi przesłanymi w nim.
Twoja pomoc jest doceniana.
W aspx:
<asp:Panel ID="pnlFilter" runat="server">
</asp:Panel>
W 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);
}
Co zrobiłbyś w sytuacji, gdy kwestionariusze (ankiety) są tworzone w określonej aplikacji, a prezentowane za pośrednictwem usługi internetowej witryna pobiera ankietę i wyświetla dla niej pola? w takim przypadku dynamicznie tworzenie treści jest jedyną odpowiednią opcją nie? – Sander
Tak, dynamiczne tworzenie zawartości jest w porządku, ale nie musi być przyrostowe, tak jak próbowałem to zrobić; Zakładam, że twoja usługa sieciowa zwraca wszystkie wyniki za każdym razem, w takim przypadku za każdym razem renderujesz je wszystkie. Przy użyciu stanu wyświetlania i buforowania wydajność powinna być całkiem dobra. –
Jesteś geniuszem. Próbowałem osiągnąć to samo co OP, ale to uświadomiło mi, że mogę zamiast dodawać wiele instancji sterowania, mogę po prostu pokazać nową kontrolkę w oknie modalnym i "zapisać" w jej modalu, zatwierdzić do magazynu danych i następnie bardzo łatwo załaduj to na stronę. Tysiące dziękuję. Spędziłem 3 dni i całą noc próbując to wymyślić. –