Using AutoPostBack with a TextBox in a Repeater

  • Thread starter Nathan Sokalski
  • Start date
N

Nathan Sokalski

I have a Repeater who's ItemTemplate contains a TextBox that has
AutoPostBack set to True. However, I am not sure where to handle this
postback. When I have a Button in the ItemTemplate, I simply use the
Repeater's ItemCommand event handler, but this event handler is not
triggered for what would normally be the TextBox's TextChanged event. Can
someone help me figure out how to handle this postback? Any help would be
appreciated. Thanks.
 
P

Patrice

Note sure to understand the problem. As you said it should be textbox
TextChanged event... Have you tried to handle this event ? At which point
are you stuck ? (you don't know where to start or you tried something and it
doesn't work ?)

BTW, which programming language do you use ? (lloks you'll need a sample)
 
P

Phil Harvey

Hi Nathan,

A simple solution to this problem is to handle the TextChanged event on the
TextBox.

In your repeater, set the OnTextChanged property to an event handler method
in your code-behind.

<asp:Repeater ID="rptData" runat="server">
<ItemTemplate>
<asp:TextBox runat="server" Text=<%#
Container.DataItem.ToString() %> OnTextChanged="TextChanged"
AutoPostBack="true" />
</ItemTemplate>
</asp:Repeater>

In your code behind, have something like the following (I hope c# is ok).

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string[] data = new string[] { "s1", "s2" };
this.rptData.DataSource = data;
this.rptData.DataBind();
}
}

protected void TextChanged(object sender, EventArgs e)
{
TextBox textbox = sender as TextBox;
Debug.WriteLine("New text: " + textbox.Text);
}

Remember to only Databind the repeater if the request is not a postback,
otherwise the TextChanged won't be fired and the new value will be lost.

Regards,
 
N

Nathan Sokalski

I had thought of that, but I didn't think it would work, since the TextBox
was inside the Repeater and was not available in the list of controls in the
codebehind in Visual Studio. But I have tried it now, since I have been told
that it did work, and thanks to you, it did! Yes, I guess I do have to plead
guilty of thinking of something and not trying it, so I guess I've learned
my lesson. Thanks.
--
Nathan Sokalski
(e-mail address removed)
http://www.nathansokalski.com/

Phil Harvey said:
Hi Nathan,

A simple solution to this problem is to handle the TextChanged event on
the
TextBox.

In your repeater, set the OnTextChanged property to an event handler
method
in your code-behind.

<asp:Repeater ID="rptData" runat="server">
<ItemTemplate>
<asp:TextBox runat="server" Text=<%#
Container.DataItem.ToString() %> OnTextChanged="TextChanged"
AutoPostBack="true" />
</ItemTemplate>
</asp:Repeater>

In your code behind, have something like the following (I hope c# is ok).

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string[] data = new string[] { "s1", "s2" };
this.rptData.DataSource = data;
this.rptData.DataBind();
}
}

protected void TextChanged(object sender, EventArgs e)
{
TextBox textbox = sender as TextBox;
Debug.WriteLine("New text: " + textbox.Text);
}

Remember to only Databind the repeater if the request is not a postback,
otherwise the TextChanged won't be fired and the new value will be lost.

Regards,

--
Phil Harvey
www.anotherblog.com



Nathan Sokalski said:
I have a Repeater who's ItemTemplate contains a TextBox that has
AutoPostBack set to True. However, I am not sure where to handle this
postback. When I have a Button in the ItemTemplate, I simply use the
Repeater's ItemCommand event handler, but this event handler is not
triggered for what would normally be the TextBox's TextChanged event. Can
someone help me figure out how to handle this postback? Any help would be
appreciated. Thanks.
 
E

Enis Hyseni

Nathan Sokalski did you ever solved the problem that you had, because I`m
stucked at that.

If you did please tell mehow can I do that?

Nathan Sokalski said:
I had thought of that, but I didn't think it would work, since the TextBox
was inside the Repeater and was not available in the list of controls in the
codebehind in Visual Studio. But I have tried it now, since I have been told
that it did work, and thanks to you, it did! Yes, I guess I do have to plead
guilty of thinking of something and not trying it, so I guess I've learned
my lesson. Thanks.
--
Nathan Sokalski
(e-mail address removed)
http://www.nathansokalski.com/

Phil Harvey said:
Hi Nathan,

A simple solution to this problem is to handle the TextChanged event on
the
TextBox.

In your repeater, set the OnTextChanged property to an event handler
method
in your code-behind.

<asp:Repeater ID="rptData" runat="server">
<ItemTemplate>
<asp:TextBox runat="server" Text=<%#
Container.DataItem.ToString() %> OnTextChanged="TextChanged"
AutoPostBack="true" />
</ItemTemplate>
</asp:Repeater>

In your code behind, have something like the following (I hope c# is ok).

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string[] data = new string[] { "s1", "s2" };
this.rptData.DataSource = data;
this.rptData.DataBind();
}
}

protected void TextChanged(object sender, EventArgs e)
{
TextBox textbox = sender as TextBox;
Debug.WriteLine("New text: " + textbox.Text);
}

Remember to only Databind the repeater if the request is not a postback,
otherwise the TextChanged won't be fired and the new value will be lost.

Regards,

--
Phil Harvey
www.anotherblog.com



Nathan Sokalski said:
I have a Repeater who's ItemTemplate contains a TextBox that has
AutoPostBack set to True. However, I am not sure where to handle this
postback. When I have a Button in the ItemTemplate, I simply use the
Repeater's ItemCommand event handler, but this event handler is not
triggered for what would normally be the TextBox's TextChanged event. Can
someone help me figure out how to handle this postback? Any help would be
appreciated. Thanks.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,012
Latest member
RoxanneDzm

Latest Threads

Top