After 16 hours of frustration, I've managed to solve this problem for a
project I'm working on.
The 'trick' is set EnableViewState ="False" for the asp:textbox inside
the Repeater control.
The problem is that by default the asp:textbox ViewState is True. This
means that the textbox value is automatically preserved between
postback (saved in the __VIEWSTATE hidden field and restored during a
page postback).
If EnableViewState ="True", the FindControl finds a 'copy'
of the asp:textbox control with it's initial value; not the postback
value. The postback value (whatever you type in the textbox AFTER the
page has loaded seems to get overridden because there is already a
control in memory with your texbox name). In my case FindControl
returns the Text property of the textbox as "".
Anyway, here's the solution:
--------------------
-------------------- ASPX
--------------------
<asp:Repeater
ID="Repeater1"
EnableViewState ="False"
runat="server">
<ItemTemplate >
<asp:TextBox
ID="txtFirstNam e"
runat="server"/>
</ItemTemplate>
</asp:Repeater>
--------------------
-------------------- C#
--------------------
foreach (RepeaterItem item in Repeater1.Items )
{
Response.Write( ((TextBox)item. Controls[1]).Text);
}
-------------------- OR
foreach (RepeaterItem item in Repeater1.Items )
{
TextBox FirstName = (TextBox)item.F indControl("txt FirstName");
Response.Write( FirstName.Text) ;
}
I'm using Visual Web Developer 2005 Express Edition Beta running .NET
version 2_0_50215 on Windows 2000 Professional.
Hope this helps,
Bill
da*****@rocketm ail.com
08.16.2005