Dropdownlist postback to default selected value?

24,020

Solution 1

You need to handle IsPostBack on page load first, because you are binding dropdown on page load. Also if your if condition executes, ddlCity.SelectedValue == "0"; will not execute.

 protected void Page_Load(object sender, EventArgs e)
 {
      if(Page.IsPostBack == false)
      {
         DataTable CityMembersTable = GetCity();
         ddlCity.DataSource = CityMembersTable;
         ddlCity.DataTextField = "CityName";
         ddlCity.DataValueField = "CityID";
         ddlCity.DataBind();

         ddlCity.Items.Insert(0, new ListItem("<--Choose City-->", ""));
      }
 }


 protected void ddlCity_SelectedIndexChanged(object sender, EventArgs e)
 {
    ddlCity.SelectedIndex = 0; //Put this here
    if (ddlCity.SelectedValue == "")
    {
        return;
    }
 }

Solution 2

Try to use SelectedIndex = 0 instead of SelectedValue. You've added the value at position 0 after binding the data.

It's also better to add an extra check in the Page_Load if the Request is a PostBack before binding the datasource:

if (!Page.IsPostBack)
{
   //bind data
} 
Share:
24,020
user1007103
Author by

user1007103

Updated on July 17, 2022

Comments

  • user1007103
    user1007103 almost 2 years

    When I select a value in the dropdownlist I get a postback and the value I selected is selected even after the postback. How do I get the default value, <--Choose City--> as selected value again after the postback?

    HTML:

    <asp:DropDownList ID="ddlCity" Width="200px" runat="server" AutoPostBack="true"
     OnSelectedIndexChanged="ddlCity_SelectedIndexChanged"> </asp:DropDownList>
    

    Markup:

    protected void Page_Load(object sender, EventArgs e)
    {
        DataTable CityMembersTable = GetCity();
        ddlCity.DataSource = CityMembersTable;
        ddlCity.DataTextField = "CityName";
        ddlCity.DataValueField = "CityID";
        ddlCity.DataBind();
    
        ddlCity.Items.Insert(0, new ListItem("<--Choose City-->", ""));
    }
    
    protected void ddlCity_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlCity.SelectedValue == "")
        {
            return;
        }
    
        ddlCity.SelectedValue == "0"; //Dose not work...
    }