我需要使用查询结果填充第二个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)
或类似内容,最后一点似乎很容易,但其余部分并没有完全点击我。
如果需要进一步澄清,请告诉我。谢谢。
答案 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