1

我在 asp.net 中遇到问题,我正在使用 2 个下拉列表,

一个用于州,另一个用于城市。

而且,我有 2 个表 "state"(state_id(pk),state_name) 和 "city"(city_id(pk),city_name,state_id(fk))

我可以使用状态表填充 ddlState(这是我的状态下拉列表)

代码是:

 dt = objGetCity.getState();

 ddlState.DataSource = dt;

 ddlState.DataTextField = dt.Columns["state_name"].ToString();
 ddlState.DataValueField = dt.Columns["state_id"].ToString();
 ddlState.DataBind();

我也可以填充城市的下拉列表,即 ddlCity(状态下拉列表的更改事件)

代码是:

 protected void ddlState_SelectedIndexChanged(object sender, EventArgs e)
    {
        int state_id = Convert.ToInt32(ddlState.SelectedValue.ToString());

        dt = objGetCity.getcity(state_id);

        ddlCity.Items.Add("Select City");

        ddlCity.Visible = true;

        ddlCity.DataSource = dt;

        ddlCity.DataValueField = dt.Columns["city_id"].ToString();
        ddlCity.DataTextField = dt.Columns["city_name"].ToString();
        ddlCity.DataBind();
    }

现在我在调试时一直注意到“state_id = 1”的问题,这就是为什么它没有向我显示其他州的任​​何其他城市。有什么解决方案?

4

1 回答 1

2

确保您在页面加载中填写 ddlState 条件为 not postback ,即确保您已在 Page_Load 事件中添加了此项

if(!Page.IsPostBack)
{

dt = objGetCity.getState();

 ddlState.DataSource = dt;

 ddlState.DataTextField = dt.Columns["state_name"].ToString();
 ddlState.DataValueField = dt.Columns["state_id"].ToString();
 ddlState.DataBind();
}
于 2013-03-28T09:28:46.900 回答