我正在开发一个WPF应用程序。它没有正确写入ComboBox,我不确定为什么。
在C驱动器上有许多标有Rameses-101
,Rameses-102
的文件夹,依此类推。在每个文件夹中都有一个存储在MDB数据库中的配置文件。直到最近,我们才会重命名活动的“Rameses”文件夹以更改配置文件并对其执行操作。
所以上面是我的表单的一部分,安装的配置文件选择组合框列出了以Rameses-*
开头的所有文件夹,然后列出它们。人们抱怨文件夹命名约定很糟糕,并希望更容易。因此,我希望能够列出存储在每个文件夹内的数据库中的名称,而不是使用文件夹名称,并让下拉框列出那些而不是文件夹名称。
我已经达到了可以让它显示单个文件夹配置文件名称的程度,但就是这样。此外,我能够列出所有名称,但是它们在一行上并且在组合框中一起被捣碎。
问题是我在代码中做错了什么。不确定问题究竟在哪里!要么我没有正确地向datalist添加项目,要么没有正确关闭循环。
这是我到目前为止所做的:
string directory = @"C:\";
string[] folders = Directory.GetDirectories(directory, "Rameses-*");
List<string> dataList = new List<string>();
foreach (string foldername in folders)
{
//var myDataTable = new System.Data.DataTable();
using (var conection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" + "data source=" + foldername + "\\Program\\Ramdata.mdb;Jet OLEDB:Database Password=****"))
{
conection.Open();
var query = "Select u_company From t_user";
var command = new System.Data.OleDb.OleDbCommand(query, conection);
var reader = command.ExecuteReader();
while (reader.Read())
{
//profselect.Text = reader[0].ToString();
dataList.Add(reader[0].ToString());
}
reader.Close();
conection.Close();
}
profselect.DataSource = dataList;
profselect.SelectedText = dataList.Last();
}
有关如何实现这一目标的任何建议吗?
答案 0 :(得分:0)
编辑:我将假设这个问题被错误标记为WPF并且真的是关于winforms,在这种情况下我的答案没有意义
profselect.ItemsSource = datalist;
(不是DataSource) 事实上它可能应该在循环之外
答案 1 :(得分:0)
数据绑定应该在循环块之外。
foreach(...)
{
...
}
profselect.DataSource = dataList;
profselect.SelectedText = dataList.Last();
很高兴听到它对你有用! 8 - )