【问题标题】:Inserting value from database to dropdownlist fails将值从数据库插入到下拉列表失败
【发布时间】:2015-10-08 05:39:52
【问题描述】:

我有如下的州和城市下拉列表(级联):

 protected void BindStateDropDown()
{
    string CS = ConfigurationManager.ConnectionStrings["SportsActiveConnectionString"].ConnectionString;
    using (SqlConnection con = new SqlConnection(CS))
    {
        con.Open();
        SqlCommand cmd = new SqlCommand("select * from tblState", con);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);
        ddlState.DataSource = ds;
        ddlState.DataTextField = "StateName";
        ddlState.DataValueField = "StateId";
        ddlState.DataBind();
    }
    ddlState.Items.Insert(0, new ListItem("---Select---", "0"));
    ddlCity.Items.Insert(0, new ListItem("---Select---", "0"));
}


protected void ddlState_SelectedIndexChanged(object sender, EventArgs e)
{
    int StatId = Convert.ToInt32(ddlState.SelectedValue);
    string CS = ConfigurationManager.ConnectionStrings["SportsActiveConnectionString"].ConnectionString;
    using (SqlConnection con = new SqlConnection(CS))
    {
        con.Open();
        SqlCommand cmd = new SqlCommand("spCities", con);
        cmd.Parameters.AddWithValue("@StatId", StatId);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);
        ddlCity.DataSource = ds;
        ddlCity.DataTextField = "CityName";
        ddlCity.DataValueField = "CityId";
        ddlCity.DataBind();
    }
    ddlCity.Items.Insert(0, new ListItem("---Select---", "0"));
}

我用来向数据库插入值如下:

 cmd.Parameters.AddWithValue("@State", ddlState.SelectedItem.Text);
 cmd.Parameters.AddWithValue("@City", ddlCity.SelectedItem.Text);

这工作正常并将州和城市插入数据库表中。现在我尝试在编辑页面上显示如下值:

 ddlState.SelectedIndex = ddlState.Items.IndexOf(ddlState.Items.FindByText(rdr["State"].ToString()));
 ddlCity.SelectedIndex = ddlCity.Items.IndexOf(ddlCity.Items.FindByText(rdr["City"].ToString()));

abpve 代码绑定了州,但没有绑定城市。城市下拉菜单仍然显示---选择---。一旦绑定了城市,我应该能够选择任何其他城市/州并再次更新。 任何帮助将不胜感激

【问题讨论】:

  • 能否请您发布绑定组合框的代码
  • 请先绑定两个组合框,然后设置选定的索引。
  • 对 ddlcity 和 ddlstate 使用不同的数据集
  • 你试过用这个dlState.SelectedValue = rdr["State"].ToString();
  • @Suprabhat - 不,它甚至不绑定状态

标签: c# asp.net sql-server cascadingdropdown


【解决方案1】:

试试这个

ddlState.SelectedIndex = ddlState.Items.IndexOf(ddlState.Items.FindByText(rdr["State"].ToString()));

然后将城市值设置为隐藏值 hf_city

hf_city.Value = rdr["City"].ToString();

然后关闭您的阅读器和连接,然后再次调用您在 ddlState_SelectedIndexChanged 上创建的函数

 int StatId = Convert.ToInt32(ddlState.SelectedValue);
    string CS = ConfigurationManager.ConnectionStrings["SportsActiveConnectionString"].ConnectionString;
    using (SqlConnection con = new SqlConnection(CS))
    {
        con.Open();
        SqlCommand cmd = new SqlCommand("spCities", con);
        cmd.Parameters.AddWithValue("@StatId", StatId);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);
        ddlCity.DataSource = ds;
        ddlCity.DataTextField = "CityName";
        ddlCity.DataValueField = "CityId";
        ddlCity.DataBind();
    }
    ddlCity.Items.Insert(0, new ListItem("---Select---", "0"));

 ddlCity.SelectedIndex = ddlCity.Items.IndexOf(ddlCity.Items.FindByText(hf_city.Value));

【讨论】:

    【解决方案2】:

    创建另一个绑定cityDropdownlist的方法:

    protected void BindCityDropDown(int StatId)
    {
        string CS = ConfigurationManager.ConnectionStrings["SportsActiveConnectionString"].ConnectionString;
        using (SqlConnection con = new SqlConnection(CS))
        {
            con.Open();
            SqlCommand cmd = new SqlCommand("spCities", con);
            cmd.Parameters.AddWithValue("@StatId", StatId);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);
            ddlCity.DataSource = ds;
            ddlCity.DataTextField = "CityName";
            ddlCity.DataValueField = "CityId";
            ddlCity.DataBind();
        }
        ddlCity.Items.Insert(0, new ListItem("---Select---", "0"));
    }
    

    在 dropdownlistselected 索引更改中调用这个:

    protected void ddlState_SelectedIndexChanged(object sender, EventArgs e)
    {
        int StatId = Convert.ToInt32(ddlState.SelectedValue);
        BindCityDropdown(StatId);
    }
    

    现在在编辑部分绑定 citydropdownlist 然后赋值:

    ddlState.SelectedIndex = ddlState.Items.IndexOf(ddlState.Items.FindByText(rdr["State"].ToString()));
    int StatId = Convert.ToInt32(ddlState.SelectedValue);
    BindCityDropdown(StatId);
     ddlCity.SelectedIndex = ddlCity.Items.IndexOf(ddlCity.Items.FindByText(rdr["City"].ToString()));
    

    【讨论】:

      猜你喜欢
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      • 2017-07-28
      相关资源
      最近更新 更多