Probably a very basic beginner question.
Imagine the following situation:
I have an ASP.NET page with a textbox and a button. In the textbox I enter let's say a name "Laurel" and click the button. The textbox is related as a control parameter to a data source and this data source pulls the content "Laurel" from the textbox to build a query, selects all orders of customer Laurel and sends them back to the browser where they are displayed in a list (gridview for instance). The list is long and has two pages (the list has a pager control). The list is on the same page where also the textbox is located. So I see now a page in my browser with the textbox (still containing the text "Laurel") and a list with a pager.
I could do now two actions:
- Enter the name "Hardy" in the textbox and click on the button: The cycle above runs again and orders of customer Hardy are displayed. That's fine and what I want.
- Click on the pager control to display the second page of Laurel's orders. This works because I still have "Laurel" in the textbox. So on the postback triggered by the pager control the data source can extract again "Laurel" as query parameter from the textbox, run the query and deliver the second page of orders to my browser. That's fine too.
Actually there could be a third action:
- I enter the name "Hardy" in the textbox, then change my mind and decide that I want to see the second page of Laurel's order. So I have "Hardy" in the textbox but don't click the submit button but instead I click on "next page" of the pager control to view the second page. On the server the data source extracts the content "Hardy" of the textbox, runs a query and then tries to deliver the second page of Hardy's instead of Laurel's orders. So that's not what I want. (Perhaps Hardy has only a few orders, not enough for two pages. The data source might tell me then "Nothing found" because there is nothing on the second page for Hardy.)
(What I mean can also be seen here on stackoverflow: Enter something in the search box, for instance "ASP.NET" and hit the enter key, you'll get a long result list with many pages. Then enter another term in the searchbox, for instance "PHP" but don't hit enter, instead click on page 2 in the pager control on bottom of the page. A postback occurs (which also transmits the new content "PHP" of the searchbox, I guess), the second page for keyword "ASP.NET" is displayed and the searchbox doesn't contain "PHP" anymore but instead again "ASP.NET".)
Question is now: How can I avoid a situation like this? My basic idea is: I need to restore the old value "Laurel" in the textbox to provide the correct parameter value to the data source query and my old value "Laurel" must be stored "somewhere" (on server? where on server? on client? if on client, hidden in the page or in a cookie or... ?). Are there some standard patterns to deal with this requirement? Or am I thinking in the wrong direction?
Thank you in advance!