user1007103
user1007103

Reputation: 425

Dropdownlist postback to default selected value?

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...
}

Upvotes: 2

Views: 24281

Answers (3)

Amar Palsapure
Amar Palsapure

Reputation: 9680

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;
    }
 }

Upvotes: 6

RBDev
RBDev

Reputation: 761

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
} 

Upvotes: 2

Emil Badh
Emil Badh

Reputation: 4612

If that is your exact code you are comparing ddl.SelectedValue against "0". Instead you want to use the assign operator, = not ==.

If it still doesn't work. Try ddlCity.SelectedIndex = 0;

Upvotes: 0

Related Questions