SELECT语句使用CheckedListBox值

时间:2015-04-26 22:14:10

标签: c# sql

我需要使用查询结果填充第二个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(string Member)或类似内容,最后一点似乎很容易,但其余部分并没有完全点击我。

如果需要进一步澄清,请告诉我。谢谢。

1 个答案:

答案 0 :(得分:0)

在这里,我在本地测试了它,它运行正常。

    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):SQL Fiddle