C# 来自2个组合框的类别影响datagridview与SQL的第三个组合框

C# 来自2个组合框的类别影响datagridview与SQL的第三个组合框,c#,sql,search,datagridview,combobox,C#,Sql,Search,Datagridview,Combobox,把它写成短篇小说 我想要类似“从maincography=firstcombobox和subcategory=secondcombobox的表中选择companyName”这样的内容,我该如何执行sql查询 ========================== 长话短说 我已经创建了一个表单,带有工作代码,但我需要额外的帮助 在某种程度上,我一直在试图找出如何让第三个组合框的值,由第一个和第二个组合框决定 我想要的是,得到Main Category和Sub Category的值来影响第三个组合框

把它写成短篇小说

我想要类似“从maincography=firstcombobox和subcategory=secondcombobox的表中选择companyName”这样的内容,我该如何执行sql查询

========================== 长话短说

我已经创建了一个表单,带有工作代码,但我需要额外的帮助

在某种程度上,我一直在试图找出如何让第三个组合框的值,由第一个和第二个组合框决定

我想要的是,得到Main Category和Sub Category的值来影响第三个组合框的列表

我只需要SQL查询,例如:“从maincegory=firstcombobox和subcategory=secondcombobox的表中选择companyName”

然后在主类别和子类别的选择中显示公司名称

像这样:

对于主类别和子类别,我让它使用此代码。 此代码还包括第三个组合框代码,该代码目前在没有将第一个和第二个组合框连接到第三个组合框代码的情况下运行

public partial class User : Form
    {

        Dictionary<string, List<string>> Category = new Dictionary<string, List<string>>();

        DataSet ds1;

        public User()
        {
            InitializeComponent();
        }
        private void User_Load(object sender, EventArgs e)
        {

            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = "Data Source=\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True";
            conn.Open();

            SqlDataAdapter daMain = new SqlDataAdapter("SELECT * FROM MAINCATE", conn);
            ds1 = new DataSet();

            daMain.Fill(ds1, "Maincate");

            DataTable dt = ds1.Tables["MAINCATE"];
            foreach (DataRow dr in dt.Rows)
            {
                List<string> SubCats = new List<string> 
                {
                 dr["Subcat1"].ToString(), 
                 dr["Subcat2"].ToString(),
                 dr["Subcat3"].ToString(),
                 dr["Subcat4"].ToString()
                };
                Category.Add(dr["mainCate"].ToString(), SubCats);
                mainCatU.Items.Add(dr["mainCate"].ToString());
            }

            mainCatU.DropDownStyle = ComboBoxStyle.DropDownList;
            mainCatU.Enabled = true;
            subCatU.DropDownStyle = ComboBoxStyle.DropDownList;

//**Code for third combobox**

            SqlDataAdapter daSearch = new SqlDataAdapter("SELECT cName FROM ComDet", conn);
            DataTable dt1 = new DataTable();
            ListU.DataSource = dt1;
            daSearch.Fill(dt1);
            ListU.ValueMember = "cName";
            ListU.DisplayMember = "cName";
            ListU.DropDownStyle = ComboBoxStyle.DropDownList;
            ListU.Enabled = true;

//**----------------------**

            conn.Close();   
        }

        private void mainCatU_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(Category.ContainsKey(mainCatU.SelectedItem.ToString()))
            {
                subCatU.DataSource = Category[mainCatU.SelectedItem.ToString()];
            }
        }
  • 同样,现在第三个组合框被编码为在没有maincategory和subcategory的情况下运行
========================

Answeed-创建了一个名为search的按钮,并将表单加载中的代码放入该按钮,添加了SQLCon,并添加了所需的SQLQuery

Thx伙计们:)


您必须通过以下查询使用:

     SELECT companyName FROM table where mainCategory = '" + mainCatU.selectedValue +     "'       and subcategory = '" + subCatU.selectedValue + "'"

尝试在
mainCatU
subCatU
组合的
SelectedValue
更改事件上调用以下函数:

private void SetCompanyList()
{
    if (string.IsNullOrEmpty(Convert.ToString(mainCatU.SelectedValue)) || string.IsNullOrEmpty(Convert.ToString(subCatU.SelectedValue))) return;

    SqlConnection conn = new SqlConnection();
    conn.ConnectionString = "Data Source=\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True";
    conn.Open();

    SqlDataAdapter daMain = new SqlDataAdapter("SELECT cName FROM ComDet where mainCate = @mainCat subCat = @subCate", conn);
    daMain.SelectCommand.Parameters.Add("@mainCat", SqlDbType.VarChar).Value = mainCatU.SelectedValue;
    daMain.SelectCommand.Parameters.Add("@subCate", SqlDbType.VarChar).Value = subCatU.SelectedValue;

    DataTable _table = new DataTable();

    daMain.Fill(_table);

    ListU.DataSource = _table;
}

有人真的能帮上忙吗?谢谢。。但我使用了字符串myRequest=“从ComDet中选择cName,其中mainCate=”+mainCatU.SelectedItem.ToString()+“”和Subcat=”+subCatU.SelectedItem.ToString()+”;取而代之的是……)@MohdNasrulIwanFajaruddin检查一下,如果有任何错误,请告诉我。我已经添加了我的答案。。在我上面编辑的帖子里。。下面。。但我还是试过你的密码。。在这里和那里改变了一些部分,它起了作用:)@MohdNasrulIwanFajaruddin好的,如果你认为我建议的解决方案值得解决你的问题,那么你必须将我建议的解决方案标记为答案。
     SELECT companyName FROM table where mainCategory = '" + mainCatU.selectedValue +     "'       and subcategory = '" + subCatU.selectedValue + "'"
private void SetCompanyList()
{
    if (string.IsNullOrEmpty(Convert.ToString(mainCatU.SelectedValue)) || string.IsNullOrEmpty(Convert.ToString(subCatU.SelectedValue))) return;

    SqlConnection conn = new SqlConnection();
    conn.ConnectionString = "Data Source=\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True";
    conn.Open();

    SqlDataAdapter daMain = new SqlDataAdapter("SELECT cName FROM ComDet where mainCate = @mainCat subCat = @subCate", conn);
    daMain.SelectCommand.Parameters.Add("@mainCat", SqlDbType.VarChar).Value = mainCatU.SelectedValue;
    daMain.SelectCommand.Parameters.Add("@subCate", SqlDbType.VarChar).Value = subCatU.SelectedValue;

    DataTable _table = new DataTable();

    daMain.Fill(_table);

    ListU.DataSource = _table;
}