当我在下拉列表中选择一个值时,我会收到一个回发,即使在回发后也会选择我选择的值。如何获取默认值< - 选择城市 - >在回发后再次选择值?
HTML:
<asp:DropDownList ID="ddlCity" Width="200px" runat="server" AutoPostBack="true"
OnSelectedIndexChanged="ddlCity_SelectedIndexChanged"> </asp:DropDownList>
标记:
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...
}
答案 0 :(得分:6)
首先需要在页面加载时处理IsPostBack
,因为您在页面加载时绑定下拉列表。此外,如果您的if
条件执行,ddlCity.SelectedValue == "0";
将无法执行。
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;
}
}
答案 1 :(得分:2)
尝试使用SelectedIndex = 0
而不是SelectedValue。在绑定数据后,您已在位置0添加了值。
如果在绑定数据源之前请求是PostBack,最好在Page_Load中添加额外的检查:
if (!Page.IsPostBack)
{
//bind data
}
答案 2 :(得分:0)
如果这是您的确切代码,则将ddl.SelectedValue与“0”进行比较。 相反,你想使用assign运算符,= not ==。
如果仍然无效。试试ddlCity.SelectedIndex = 0;