1

州用と都市用の 2 つのドロップダウン リストがあります。正常に動作するデータベースから州のドロップダウンを作成しています。そして、州のインデックスが変更されると、都市のドロップダウンにデータが入力される方法があります。なんらかの理由で状態を変更し、メソッドが populateCity ドロップダウンにヒットすると、次のエラーが表示されます

Sqleexception エラー: 列名 'ME' が無効です

ME はメイン州を選んだという理由だけで、da.fill(ds, "City"); の下で、選択したすべての州で発生します。なぜそれを続けているのかわからない。

州のドロップダウンと都市のドロップダウンのコードは次のとおりです。

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ConnectionString);

        SqlCommand cmdState = new SqlCommand("SELECT DISTINCT state,abr FROM tbl_zip ORDER BY state ASC", con);
        DataSet dsState = new DataSet();
        SqlDataAdapter daState = new SqlDataAdapter(cmdState);

        con.Open();
        daState.Fill(dsState, "State");

        States.DataSource = dsState.Tables[0];
        States.DataTextField = "state";
        States.DataValueField = "abr";
        States.DataBind();

        con.Close();
    }
}

protected void States_SelectedIndexChanged(object sender, EventArgs e)
{
    if (States.SelectedItem.Value != "Select")
    {
        string st = States.SelectedValue;
        PopulateCity(st);
    }
}

protected void PopulateCity(string st)
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ConnectionString);
    SqlCommand cmd = new SqlCommand("SELECT DISTINCT city FROM tbl_zip WHERE abr = " + st, con);
    DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    con.Open();
    da.Fill(ds, "City");

    Cities.DataSource = ds.Tables[0];
    Cities.DataTextField = "city";
    Cities.DataValueField = "city";
    Cities.DataBind();
}
4

3 に答える 3

2

状態値は引用符で囲む必要があります。すなわち:

SqlCommand cmd = new SqlCommand("SELECT DISTINCT city FROM tbl_zip WHERE abr = '"+ st +"'", con);
于 2013-10-22T14:35:17.483 に答える