2012-01-07 10 views
4

コードビハインドを介してテーブルにTableRowsを追加しました。行はページ上でレンダリングされますが、PostBackでは、行はもはやコレクションの一部になりません。これらの行を維持してPostBackで使用できるようにするにはどうすればよいですか?PostbackのRowsコレクションにTableRowsが動的に追加されました

た.ascx

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

あなたはPage_Initイベントに動的なコントロールをcontructする必要が.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); 

答えて

1

はい、あなたはASP.NETは、(あなたがテキストボックスから値にアクセスする必要があります)ページコントロールツリー

に後でViewStateのデータをロードできるようにPage_Intイベントであなたの動的なコントロールでコントロールツリーを構築する必要があります

ダイナミックコントロールは、コントロールのタイプがダイナミックな場合にのみ使用してください。そうでなければ、あなたはリピータを使用して同じことをachiveできるし、リストビュー

Truely Understanding Dynamic Controls

そしてここでは、Dynamicを使用する代わりにそれがあった

ASP.NET: Alternatives to Dynamic Controls - Part 1

+0

ありがとうございました!!!また、リンクのために!はい、通常は2行しかないテーブルを使用していますが、これをListViewに変更します。 – codezoo

+0

クール、完了したら、関連する回答に印を付けてください。 –

3

。おそらくPage_Loadまたは他の場所でこれをやっていますか? Page_Initより後で追加された場合、ViewStateに参加せずに問題が発生します。

+0

おかげで、制御します。 – codezoo

関連する問題