我的 datagridview 中有一个ComboBoxColumn
,绑定到它们的数据来自另一个表。数据可以随时更新,因此我想在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 中。然后,我将用户数组提供给上述类,并创建一个显示所有用户名的 datagridcombobox 列。这按预期工作,因为它显示用户列表,然后在用户更改时更新主表。
但是,如果我将用户添加到列表中,我再次调用上面的代码以获取更新的列表,然后使用此列表将列表提供给组合框列 -
ScripterCombo.DataSource = updatedUserList;
不幸的是,这不会更新组合框,但是当我在运行它后检查 DataSource 时,它会显示新添加的用户。它只是不想显示它。
希望这是有道理的。
谢谢