Reputation: 83
Scenario: I am having a user control which has two drop down lists. The values of the second drop down is fetched and populated depending on the selection made in the first. So, the first drop down makes a postback and pulls the data for the second. The second dropdown, therefore, does not need any postbacks on any selection changes.
This user control is being used on a page in a gridview, and therefore it repeats several times depending on the number of records in the grid.
Problem: When I make a selection in any of the dropdowns, my previous selections in all the user control dropdowns are lost and reset to the first item in the dropdown list.
Solution that works for me: I am able to fix this behavior by setting the selections made in viewstate on SelectedIndexChanged event for the respective DropDownList. But I want to avoid the postback being made by the second dropdown as it does not do anything related to UI (changing or pulling additional data to update on screen) and from the user perspective, its a waste of time and thus irritating.
I have also tried using javascript to write the values I want to persist into hidden fields, but the hidden field values are empty when the page is refreshed.
So, What is the best way to persist the dropdown values without having to postback or to write server-side code?
Thanks in advance.
Upvotes: 1
Views: 401
Reputation: 14302
@Aniruddha , I guess you are filling the first dropdown at the page load of UserControl so write that code in !IsPostBack constraint, i.e.
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack){
// Write your existing drop down bind or other code here.
}
}
Aniruddha you are probably binding you grid in the Page_Load and so in this case bind the grid under constraint of !IsPostBack
as above
Hope this will help you !!
Upvotes: 1