C# 使用CheckedListBox值选择语句

C# 使用CheckedListBox值选择语句,c#,sql,C#,Sql,我需要用查询结果填充第二个CheckedListBox,该查询的值取决于在初始CheckedListBox中选中的选项,每次选中或取消选中另一个框时都会重新查询 另外一个有用的方法是重用我正在使用的SqlConnection。这似乎很简单,但我不知道怎么做。现在我有这个 private void Connection() { SqlConnection conn = new SqlConnection("Data Source=(local);Initial Ca

我需要用查询结果填充第二个CheckedListBox,该查询的值取决于在初始CheckedListBox中选中的选项,每次选中或取消选中另一个框时都会重新查询

另外一个有用的方法是重用我正在使用的SqlConnection。这似乎很简单,但我不知道怎么做。现在我有这个

    private void Connection()
    {
        SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=Project;Integrated Security=True");
        conn.Open();
        DataSet ds = new DataSet();
        SqlDataAdapter adapter = new SqlDataAdapter
        ("SELECT [StandardCode], c.CanStatement, [StandardDetail] FROM [dbo].[StandardCodesAndDetails] s JOIN dbo.CanStatements c ON c.StandardsID=s.ID", conn);
        adapter.Fill(ds);
        this.lstBoxStandardCodes.DataSource = ds.Tables[0];
        this.lstBoxStandardCodes.DisplayMember = "StandardCode";
        //conn.Close();
    }
在初始化时,它填充第一个CheckedListBox(lstBoxStandardCodes),我正在寻找一种方法来调整最后两行以接受变量输入,并将其用于我的第一个问题(如果有意义的话)。lstBoxStandardCodes将更改为lstBoxStandardDetails(在本例中),“StandardCode”将变为“StandardDetails”。通过将
private void Connection()
更改为
private void Connection(字符串成员)
或诸如此类的内容,最后一点似乎很简单,但其余部分对我来说并不太合适


如果需要进一步澄清,请让我知道。谢谢。

给你,我在本地进行了测试,效果很好

    private void Connection()
    {
        //Please use a using statement as below
        using (SqlConnection conn = new SqlConnection("Data Source=PWALTON-ACER;Initial Catalog=pwalton-test;Integrated Security=True"))
        {
            conn.Open();

            DataSet ds = new DataSet();
            SqlDataAdapter adapter = new SqlDataAdapter
            ("SELECT [StandardCode], c.CanStatement, [StandardDetail] FROM [dbo].[StandardCodesAndDetails] s JOIN dbo.CanStatements c ON c.StandardsID=s.ID", conn);
            adapter.Fill(ds);
            lstBoxStandardCodes.DataSource = ds.Tables[0];
            lstBoxStandardCodes.DataTextField = "StandardCode";
            lstBoxStandardCodes.DataBind(); //Don't forget to DataBind()

            lstBoxStandardDetails.DataSource = ds.Tables[0];
            lstBoxStandardDetails.DataTextField = "StandardDetail";
            lstBoxStandardDetails.DataBind(); //This list won't populate if you don't DataBind()
        }
    }

没有任何关于支持表的信息,但我推断可能是这样的(基于原始帖子中的内联SQL):

有了这个,单击StandardCode CheckedListBox中的不同或多个选项是否每次都会改变StandardDetail CheckedListBox的内容?@Eiketsu我认为需要更多信息。第一个列表中的选择将如何影响第二个列表?另外,您是否希望事情以异步方式发生,或者您是否希望在有人更改第一个列表和看到第二个列表中的更改之间发生页面加载?对。我想还需要更多的信息。很抱歉。基本上,选择的每个标准代码都会在第二个框中列出其相关的标准描述。取消选中“任何”将删除它们的描述,并且可能会选择多个代码,从而在“描述”框中列出多个值。每次在“代码”框中选中或取消选中某些内容时,“说明”框都会更改。这更有意义吗?多一点。您可以给出一个示例,说明您希望SQL语句如何根据所选信息进行更改。另外,检查我在答案中发布的SQL FIDLE,看看我对支持表的假设是否正确。如果没有,请修改它,并在注释中发布一个指向修改版本的链接。表中唯一的区别是CanStatement有一个外键约束绑定到标准细节,如果这很重要的话。我希望能够更改连接语句的最后三行(数据源
数据文本字段
,以及
数据绑定
详细信息)。设置标准代码将在初始化和不变时完成;每次选中或取消选中代码中的新值时,标准详细信息都将更新,并使用lstBoxStandardDetails值调用连接方法。