2

私はWPFアプリに取り組んでいます。ComboBox への書き込みが適切に行われておらず、その理由がわかりません。

Rameses-101C ドライブには、などのラベルが付いた多数のフォルダーがありますRameses-102。各フォルダには、MDB データベースに保存されているプロファイルがあります。最近まで、アクティブな「Rameses」フォルダーの名前を変更してプロファイルを変更し、そこで作業を実行していました。

現在の WPF フォーム

上記は私のフォームの一部であり、インストールされたプロファイル選択コンボボックスには、で始まるすべてのフォルダーが一覧表示されRameses-*、次にそれらが一覧表示されます。人々は、フォルダの命名規則がひどいので、もっと簡単なものが欲しいと不満を漏らしました。そのため、フォルダー名を使用する代わりに、各フォルダー内のデータベースに保存されている名前を一覧表示し、ドロップダウン ボックスにフォルダー名の代わりにそれらを一覧表示できるようにしたいと考えています。

単一のフォルダーのプロファイル名を表示できるようになりましたが、それだけです。また、すべての名前をリストすることもできましたが、それらは1行にあり、コンボボックスで一緒にマッシュアップされていました。

質問は、コードで何が間違っているのかです。問題がどこにあるのか正確にはわかりません!データリストに項目を適切に追加していないか、ループを適切に閉じていません。

これが私がこれまでに持っているものです:

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();
}

これを達成する方法について何か提案はありますか?

4

2 に答える 2

0

データ バインディングは、ループ ブロックの外にある必要があります。

foreach(...)
{
    ...
}
profselect.DataSource = dataList;
profselect.SelectedText = dataList.Last();

それがあなたのために働いたと聞いてうれしいです! 8-)

于 2013-07-05T01:18:24.340 に答える
0

編集: この質問は WPF として誤ってタグ付けされており、実際には winforms に関するものであると仮定します。その場合、私の答えは意味がありません

profselect.ItemsSource = データリスト;

(DataSourceではありません)そして実際、おそらくループの外にあるはずです

于 2013-07-05T00:49:09.377 に答える