【发布时间】:2014-12-06 20:02:48
【问题描述】:
我有一个包含 2 个类别的数据库,我将其转换为列表并计划将其用作 C# 中下拉组合框的数据源
B 类连接到 B 类,例如(在数据库中):
CatA CatB
a 1
a 2
b 3
b 4
计划是使用 droplist 来选择 catA,然后在更改时将 CatB 加载到第二个 droplist。
所以如果我选择 CATA=a 我将得到 CATB=1,2
获取CATA的代码
public List<string> getCatAlist()
{
List<string> catAlist = new List<string>();
List<string> filteredList = new List<string>();
_con.Open();
_cmd.CommandText = "SELECT * FROM category";
var dr = _cmd.ExecuteReader();
while (dr.Read())
catAlist.Add(dr["catA"].ToString());
_con.Close();
filteredList = catAlist.Distinct().ToList();
return filteredList;
}
获取 CATB 的代码
public List<string> getCatBlist(string catA)
{
List<string> catBlist = new List<string>();
_con.Open();
_cmd.CommandText = "SELECT * FROM category WHERE catA='"+catA+"';";
var dr = _cmd.ExecuteReader();
while (dr.Read())
catBlist.Add(dr["catB"].ToString());
_con.Close();
return catBlist;
}
问题是将列表设置为组合框的数据源
我打开与数据库的连接,并在第一次运行时加载列表,但当我再次尝试使用它时,它会将其转换为数据源的静态列表。
知道如何解决这个问题吗?
【问题讨论】:
-
提示:CatAlist 的 cmdtxt 可以是
select distinct CatA from category。所以cpu不必做这项工作。你能发布OnSelectionChanged代码吗,这似乎比SQL 代码更相关。 -
@RadioSpace 现在有问题,视觉工作室不知何故杀死了代码,或多或少的 onselection 更改 comboB.datasoure=getCatBlist(comboA.text);
-
@T.S.做改变但不是很多,我可以重新考虑它只做一次,如果我添加新的加载必须重新加载。或者可能会添加带有命令的刷新按钮来更新全局列表。
标签: c# sql combobox datasource