Проблема с динамической таблицей в управлении ascx

У меня есть следующая таблица в пользовательском элементе управления 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, я не смог бы получить доступ к обновленным значениям пользователя, потому что они потеряны.

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


person woolagaroo    schedule 17.05.2011    source источник
comment
Можете ли вы показать нам код программной части?   -  person BenW    schedule 17.05.2011


Ответы (1)


Вместо этого лучше всего использовать управление сеткой.

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

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

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

person Shadow Wizard Wearing Mask V2    schedule 17.05.2011
comment
Проблема в том, что код находится в элементе управления ascx, поэтому публичный List‹TextBox› m_tableTextboxes = new List‹TextBox›(); строка выполняется каждый раз, даже при обратных передачах :( - person woolagaroo; 17.05.2011
comment
@woola это не должно иметь значения ... насколько я помню, после того, как элементы управления были добавлены на страницу, они должны оставаться там при обратной публикации, если они явно не перезаписаны. Я могу ошибаться, но попробовать определенно стоит. - person Shadow Wizard Wearing Mask V2; 17.05.2011