I have 2 pages, both with 3 similar DropDownLists. The first DropDownList needs to be populated before selecting the second, and the second before the third (which then populates a gridview).
Usually, a user will view data on one page, click a button, and then view data on the next page (usually with the same DropDownList selections). Is there any way to have the dropdownlists pre-populated with their old selections?
You can pass values from one page to the other using the PreviousPage
parameter that asp.net provides you. A small example:
You set the second page on the submit button as:
PostBackUrl="SecondPage.aspx"
On SecondPage.aspx you declare where you can get informations
<%@ PreviousPageType VirtualPath="~/FirstPage.aspx" %>
and you get them by...
if (Page.PreviousPage != null)
{
if(Page.PreviousPage.IsCrossPagePostBack == true)
{
// and get the controls of the previous page as
var SomeVariable = PreviousPage.DropDownlListId.SelectedValue;
}
}
Some reference.
Cross-Page Posting in ASP.NET Web Pages
ASP.NET how to access public properties?
Cross-page postbacks and back again retaining data from source page
Cross-page posting. Is it a good pratice to use PreviousPage in Asp.net?
If you have the form where the button that the users click post to the second page, the second page can look for the values of the DDL and set them on page load.
There is a way:
- pass selections to the second page either via Session or Query String
- populate first dropdown
- select appropriate item
- repeat 2-3 for the rest of dropdowns
If you're looking for a magic solution that just "does that", I don't think this is possible.
p.s. You might rethink your design (if this is an option) and have the grid on the first page; bind the grid when user selects a value from the last dropdown (make sure you have AutoPostback
set to True
on your last dropdown in order to trigger the final postback)