1

我有 2 个组合框和数据网格视图我可以根据表格分别过滤 2 个组合框,但我想根据第一个组合框过滤它们。我尝试了不同的方法,但我的第二个组合框是空的..没有任何反应..请帮帮我。

{
    String Query = " SELECT  distinct [t_street_name] FROM  [ICPS].[dbo].[tickets]  ";
    SqlConnection conDataBase = new SqlConnection(conString);
    SqlCommand cmdDataBase = new SqlCommand(Query, conDataBase);
    SqlDataAdapter sda = new SqlDataAdapter(cmdDataBase);
    SqlDataReader myReader;
    try
    {
        conDataBase.Open();
        myReader = cmdDataBase.ExecuteReader();

        while (myReader.Read())
        {
            string t_street_name = myReader["t_street_name"].ToString();
            comboBox1.Items.Add(t_street_name);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

void fillcombo1()
{

    String Query =  ("SELECT  distinct [t_zone_name] FROM  [ICPS].[dbo].[tickets] where  [t_street_name] ='" + comboBox1.SelectedItem + "'conString ") ;
    SqlConnection conDataBase = new SqlConnection(conString);
    SqlCommand cmdDataBase = new SqlCommand(Query, conDataBase);
    SqlDataReader myReader;
    try
    {
        conDataBase.Open();
        myReader = cmdDataBase.ExecuteReader();

        while (myReader.Read())
        {
            string t_zone_name = myReader["t_zone_name"].ToString();
            comboBox2.Items.Add(t_zone_name);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

private void Form1_Load(object sender, EventArgs e)
{
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}

private void button2_Click(object sender, EventArgs e)
{
    SqlConnection conDatabase = new SqlConnection(constring);

    conDatabase.Open();

    DataTable db = new DataTable();
    SqlDataAdapter sda = new SqlDataAdapter(String.Format("select  distinct *  from" + " [ICPS].[dbo].[tickets] " +
    "where   [ICPS].[dbo].[tickets].[t_street_name]  = '" + comboBox1.Text + "'" +
    "and ([ICPS].[dbo].[tickets].[t_date_time_issued]) BETWEEN Convert(DATETIME, '{0}', 103) AND Convert(DATETIME, '{1}', 103)", StartDate.Value.ToString("dd/MM/yyyy"), EndDate.Value.ToString("dd/MM/yyyy")), constring);

    sda.Fill(db);

    dataGridView1.DataSource = db;
}
4

3 回答 3

0

除了关于使用参数化查询和使用SQL 连接的明显评论之外,您是否真的直接在数据库管理程序中检查过 SQL 语句?对我来说,声明文本之间似乎没有空格

... comboBox1.Text + "'" + "和 ([ICPS].[dbo] ...

除此之外,您显然需要从第一个组合上的选定索引事件中加载第二个组合。

于 2013-06-24T14:15:55.277 回答
0

您正在寻找像州/城市这样的过滤(例如),对吗?因此,如果有人在第一个组合框中选择了一个州,那么您希望将该州内的城市列表填充到第二个组合框中。正确的?

于 2013-06-24T12:33:02.713 回答
0

我已经试过了,现在一切正常..

私人无效组合框1_SelectedIndexChanged(对象发送者,EventArgs e){

         SqlConnection conDatabase = new SqlConnection(constring);

        comboBox2.SelectedIndex = -1;
        comboBox2.Items.Clear();
        if ( conDatabase.State == ConnectionState.Closed)
        {
            conDatabase.Open();
        }
        SqlCommand cmd = new SqlCommand(" select distinct  sz_zone_name from  [ICPS].[dbo].[spid_zones] " + 
            "inner join [ICPS].[dbo].[spid_street]" +
             " on [ICPS].[dbo].[spid_street].ss_number = [ICPS].[dbo].[spid_zones].[sz_street_number]"  +
         " where [ICPS].[dbo].[spid_street].ss_name  ='" + comboBox1.SelectedItem + "'", conDatabase);
        SqlDataReader rd = cmd.ExecuteReader();
        while (rd.Read())
        {
            comboBox2.Items.Add(rd[0]);
        }
于 2013-06-24T15:06:06.677 回答