通过listbox获取SQL数据
好的,我要做的是单击我拥有的列表框中的一项,该列表框根据用户在文本框中键入的内容从sql数据库获取数据 现在,当我在第一个列表框中单击该项目时,我需要在第二个列表框中显示与该项目相关的更多信息。 当用户在文本框中输入名称时,sql中的前10个显示出来,现在我有了它,我需要单击其中一个项目,并在下一个列表框中获取该客户机的“任务”。任务是数据库中的事务 我非常确定我的代码是正确的,我没有收到任何错误,但是列表框中没有显示任何内容 这是我的密码:通过listbox获取SQL数据,sql,listbox,Sql,Listbox,好的,我要做的是单击我拥有的列表框中的一项,该列表框根据用户在文本框中键入的内容从sql数据库获取数据 现在,当我在第一个列表框中单击该项目时,我需要在第二个列表框中显示与该项目相关的更多信息。 当用户在文本框中输入名称时,sql中的前10个显示出来,现在我有了它,我需要单击其中一个项目,并在下一个列表框中获取该客户机的“任务”。任务是数据库中的事务 我非常确定我的代码是正确的,我没有收到任何错误,但是列表框中没有显示任何内容 这是我的密码: private void listBox1_Sele
private void listBox1_SelectedValueChanged(object sender, EventArgs e)
{
string item = listBox1.SelectedItem.ToString();
if (listBox1.ContainsFocus)
{
if (item == "")
{
}
else
{
var con2 = Conn.ConnString();
using (SqlConnection myConnection2 = new SqlConnection(con2))
{
string oString2 = "select CLIENTMATTERS.MATTER, CLIENTMATTERS.DESCRIPTION from CLIENTMATTERS join CLIENTCODES on CLIENTMATTERS.CLIENT = CLIENTCODES.CLIENT Where CLIENTCODES.DESCRIPTION = '@code1'";
SqlCommand oCmd = new SqlCommand(oString2, myConnection2);
oCmd.Parameters.AddWithValue("@code1", item);
myConnection2.Open();
oCmd.Connection.Open();
List<string> codelist2 = new List<string>();
using (SqlDataReader oReader2 = oCmd.ExecuteReader())
{
if (oReader2.HasRows)
{
string value = string.Empty;
while (oReader2.Read())
{
codelist2.Add(oReader2["MATTER"].ToString());
}
}
}
this.listBox2.DataSource = codelist2;
}
}
}
}
您需要使用BindingList而不是List
列表未实现ListChanged事件,因此当数据源发生更改时,不会通知ListBox
在您的示例中,它将如下所示:
BindingList<string> codelist2 = new BindingList<string>();
有关更多信息,请参阅