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
}
Author by
user1007103
Updated on July 17, 2022Comments
-
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... }