0

私はComboBoxColumn自分の datagridview に を持っており、それらにバインドされているデータは別のテーブルからのものです。ComboBoxColumnデータはいつでも更新できるので、別のテーブルからデータが追加/更新されたときに自動的にデータを更新したいと考えています。

使ってみた -

ScripterCombo.DataSource = updatedUserList;

updatedUserListは に適用したいデータのリストです。ComboBoxColumnすでに の を設定しています。残念ながら更新はありません。変更を表示するには、アプリケーション全体をリロードする必要があります。DataSourceComboBoxColumnComboBoxColumn

アップデート -

申し訳ありませんが、データを格納するためにリストを使用していません。文字列配列を使用しています。基本的に、バックエンド サーバーに接続し、「ユーザー」列のすべての名前をループします。

MySqlConnection(Constants.serverInfo))
            {
                getNumberOfUsers.Open();

                using (MySqlCommand requestCommand = new MySqlCommand("SELECT COUNT(*) FROM userlist", getNumberOfUsers))
                {
                    MySqlDataReader userReader = requestCommand.ExecuteReader();

                    while (userReader.Read())
                    {
                        iNumberOfUsers = userReader.GetInt32(0);               // Pull the number of Owners from the backend.
                        strListOfUsers = new string[iNumberOfUsers];          // Make sure the owner list can hold the value pulled from the backend. 
                    }
                    userReader.Close();
                }
                getNumberOfUsers.Close();
            }

            // Get the names of the users 
            using (MySqlConnection getUsersNames = new MySqlConnection(Constants.serverInfo))
            {
                getUsersNames.Open();

                using (MySqlCommand requestCommand = new MySqlCommand("SELECT username FROM userlist", getUsersNames))
                {
                    MySqlDataReader userReader = requestCommand.ExecuteReader();

                    for (int i = 0; i < iNumberOfUsers; i++)
                    {
                        while (userReader.Read())
                        {
                            strListOfUsers[i] = userReader.GetString(0); ;                  // Add the user to the list of users. 
                            i++;                                                
                        }
                    }
                    userReader.Close();
}
getUsersNames.Close();
}

別のテーブルからデータを取得して datagridview に表示する別のクラスがあります。次に、ユーザーの配列を上記のクラスにフィードし、すべてのユーザー名を表示する datagridcomboboxcolumn を作成します。ユーザーリストを表示し、ユーザーが変更されたときにメインテーブルを更新するため、これは期待どおりに機能します。

ただし、リストにユーザーを追加すると、上記のコードを再度呼び出して更新されたリストを取得し、これを使用してリストをコンボボックス列にフィードします-

 ScripterCombo.DataSource = updatedUserList;

残念ながら、これはコンボボックスを更新しませんが、これを実行した後に DataSource を確認すると、新しく追加されたユーザーが表示されます。表示したくないだけです。

これが理にかなっていることを願っています。

ありがとう

4

1 に答える 1

0

追加してみてくださいToList()

ScripterCombo.DataSource = updatedUserList.ToList();
于 2013-01-02T12:41:40.163 に答える