Динамически добавленные TableRows не в коллекции Rows при обратной передаче - PullRequest
4 голосов
/ 07 января 2012

Я добавил TableRows через код в таблицу. Строки отображаются на странице, но в PostBack строки больше не являются частью коллекции. Какой способ заставить эти строки сохраниться, чтобы я мог использовать их в PostBack?

.ascx

<asp:Table id="OrderItemsTable" runat="server">

.ascx.cs

TableRow itemRow = new TableRow();

// Ticket Quantity
TableCell cell1 = new TableCell();
cell1.Attributes.Add("align", "center");
TextBox ticket1QuantityTextBox = new TextBox();
ticket1QuantityTextBox.Width = Unit.Pixel(30);
ticket1QuantityTextBox.MaxLength = 3;
ticket1QuantityTextBox.Attributes.Add("class", "OrderItemTicketQuantityTB");
ticket1QuantityTextBox.Text = item.Quantity.ToString();
cell1.Controls.Add(ticket1QuantityTextBox);
itemRow.Cells.Add(cell1);
...
OrderItemsTable.Rows.Add(itemRow);

Ответы [ 2 ]

3 голосов
/ 07 января 2012

Вам необходимо создать динамические элементы управления для события Page_Init.Возможно, вы делаете это в Page_Load или в другом месте.Если они добавляются позже, чем Page_Init, они не участвуют в ViewState, что вызывает проблемы.

1 голос
/ 07 января 2012

Да, вам нужно построить дерево элементов управления с вашими динамическими элементами управления в событии Page_Int, чтобы ASP.NET мог позже загрузить данные ViewState в дерево элементов управления страницей (которое вам потребуется для доступа к значениям из TextBox)

На стороне не следует использовать Динамическое управление только тогда, когда тип управления является динамическим. Иначе вы можете достичь того же, используя Repeater и listview

Истинное понимание динамического управления

А вот альтернатива использованию динамических элементов управления

ASP.NET: альтернативы динамическим элементам управления - часть 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...