Проблема с динамической таблицей в контроле ascx - PullRequest
0 голосов
/ 17 мая 2011

У меня есть следующая таблица в пользовательском контроле ascx:

<tr runat="server" id="rowChangeSerNo">
        <td colspan="2">
            <table id="tblChangeSerNo" runat="server">
            </table>
        </td>
</tr>
<tr id="row" runat="server">
    <td>
        <asp:Button ID="btChangeSerNo" runat="server" Text="Update" OnClick="btChangeSerNo_onClick" />
    </td>
 </tr>

Я создаю tblChangeSerNo динамически с текстовыми полями, предварительно заполненными текущими значениями в БД. Идея элемента управления состоит в том, чтобы позволить пользователю обновлять значения БД новыми значениями. Проблема в том, что при вызове метода btChangeSerNo_onClick:

  • Таблица не отображается, так как я делаю это перед предварительным отображением
  • Даже если я отобразил таблицу на Page_Load, я не смог бы получить доступ к обновленным значениям пользователя, потому что они потеряны.

Как я могу решить эту проблему?

1 Ответ

1 голос
/ 17 мая 2011

Лучшим способом будет использование Grid control.

Если вы предпочитаете придерживаться собственного кода, выполните следующие действия:

  1. Сохраните все текстовые поля вглобальные поля, например, public List<TextBox> m_tableTextboxes = new List<TextBox>(); и при создании добавить в этот список.
  2. иметь код, создающий динамические элементы управления в Page_Load, но выполнять его только тогда, когда нет PostBack: if (!Page.IsPostBack) { ... }
  3. В событии нажатия кнопки прочитайте значения из вашего глобального поля.

Сделано что-то подобное в прошлом, поэтому концепция должна работать.

...