Динамическое добавление столбцов в таблицу ASP.NET - постбэк - PullRequest
1 голос
/ 01 июня 2011

На моей странице aspx есть элемент управления таблицей asp.net, содержащий asp.net объекты TableRow;

Моя цель - динамически добавлять столбцы в эту таблицу, нажимая кнопку с изображением. Таблица состоит из нескольких объектов TableRow, каждый из которых по умолчанию содержит ASP.NET TableCell с некоторой меткой. Я пытаюсь добавить столбцы, нажав кнопку с изображением, якобы добавив новую ячейку в коллекцию ячеек строки. Например, если я хочу добавить столбец, содержащий раскрывающийся список для конкретной строки, я делаю:

DropDownList ddl = new DropDownList();
            TableCell tableCell= new TableCell();
            tableCell.Controls.Add(ddl);
            tableRow.Cells.Add(tableCell);

Проблема в том, что я никогда не могу выйти за пределы одного добавленного столбца, потому что всякий раз, когда я нажимаю созданную мной кнопку «AddColumn» asp.net, прежде чем я получу ее обработчик где-нибудь в жизни Цикл объекта TableRow умирает вместе с его коллекцией ячеек. Я как-то думал о сохранении копий объектов строки в сеансе, но не могу думать правильного момента времени для сохранения.

И вообще - разве asp.net не должен держать все в поле зрения? Пожалуйста, помогите и предоставьте решения. Я полностью сбит с толку.

Кстати, ASPX выглядит примерно так:

<asp:TableRow runat="server" ID="RequestorEmailRow">
                        <asp:TableCell runat="server" Text="...">
                        </asp:TableCell>
                    </asp:TableRow>

1 Ответ

1 голос
/ 01 июня 2011

Представление ASP.NET хранит только значения элементов управления, а не наличие самих элементов управления.Состояние просмотра десериализовано между Page_Init и Page_Load.Если вы динамически добавляете объекты стиля <asp: на веб-страницу, вам необходимо воссоздать их в Page_Init, иначе ASP.NET не будет обрабатывать их представление.

Более удачным подходом будет использование GridView control (в разделе «Данные» панели инструментов). В отличие от asp:Table, состояние просмотра asp:GridView включает любые строки, которые вы могли бы добавить.

...