2009-09-27 3 views
1

Моя проблема - каждый раз, когда я нажимаю кнопку «Тест», создается только одно текстовое поле. Если я нажму два раза, я бы хотел, чтобы появилось два текстовых поля.Asp.Net - UpdatePanel - добавить много текстовых полей

Я пробую это solution, и он, кажется, работает отлично, за исключением только одного. Каждый текст в текстовом поле будет (перо) созданы таким образом, я освобождаю значение пользователя ввел ...

Aspx:

<asp:UpdatePanel ID="upTest" runat="server"> 
    <ContentTemplate> 
     <asp:Button ID="btnTest" runat="server" Text="Test" OnClick="btnTest_Click" /> 
     <asp:Panel ID="pnTest" runat="server" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

Code-за

protected void btnTest_Click(object sender, EventArgs e) 
{ 
    pnTest.Controls.Add(new TextBox()); 
} 

ответ

2

Проблема заключается в том, что вы ожидая, что UpdatePanel будет обрабатывать ваше viewstate, и он действительно работает только для предварительно определенных элементов управления. Поскольку вы делаете их на лету, у них нет viewstate, поэтому вам нужно будет сделать все управление viewstate самостоятельно.

Вы можете сохранить значения в каждом обратном направлении, а затем повторно вставить их после восстановления элементов управления, но для этого нет встроенных функций. Каждый раз, когда вы отправляете обратно, вы можете сохранить имя элемента управления в качестве ключа viewstate, а затем сохранить значение. Затем, когда вы воссоздаете элемент управления, вы можете просто сопоставить имена элементов управления (которые должны быть одинаковыми) и значения с вновь созданными элементами управления, за исключением, очевидно, новейшего, который еще не сохранил запись.

+0

могли бы вы предоставить мне пример или ссылку на то, что ваш объяснить, потому что я стараюсь, но я не добиться никакого успеха ... – Melursus

Смежные вопросы