在级联DropDownList中禁用AutoFill即可解决此问题。在DropDownList的属性AutoPostBack为true的情况下,在第一个DropDownList的SelectedIndexChanged事件中显式调用第二个DropDownList的DataBind()方法。示例代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
}
}
private void BindData()
{
ddl1.DataSource = GetFirstDropDownListData();
ddl1.DataTextField = "Text";
ddl1.DataValueField = "Value";
ddl1.DataBind();
ddl2.DataSource = GetSecondDropDownListData();
ddl2.DataTextField = "Text";
ddl2.DataValueField = "Value";
ddl2.DataBind();
// 绑定数据之后调用第一个DropDownList的SelectedIndexChanged事件。
ddl1_SelectedIndexChanged(null, null);
}
protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
{
// 根据第一个DropDownList的选中项获取第二个DropDownList的数据。
List dataSource = GetSecondDropDownListData(ddl1.SelectedValue);
ddl2.DataSource = dataSource;
ddl2.DataBind();
}