私はComboBoxColumn
自分の datagridview に を持っており、それらにバインドされているデータは別のテーブルからのものです。ComboBoxColumn
データはいつでも更新できるので、別のテーブルからデータが追加/更新されたときに自動的にデータを更新したいと考えています。
使ってみた -
ScripterCombo.DataSource = updatedUserList;
updatedUserList
は に適用したいデータのリストです。ComboBoxColumn
すでに の を設定しています。残念ながら更新はありません。変更を表示するには、アプリケーション全体をリロードする必要があります。DataSource
ComboBoxColumn
ComboBoxColumn
アップデート -
申し訳ありませんが、データを格納するためにリストを使用していません。文字列配列を使用しています。基本的に、バックエンド サーバーに接続し、「ユーザー」列のすべての名前をループします。
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 を確認すると、新しく追加されたユーザーが表示されます。表示したくないだけです。
これが理にかなっていることを願っています。
ありがとう