从mysql更新组合框中的值

时间:2013-01-02 12:38:19

标签: c# mysql datagridview combobox

我的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中。然后,我将用户数组提供给上面的类,并创建一个显示所有用户名的datagridcomboboxcolumn。这按预期工作,因为它显示用户列表,然后在更改用户时更新主表。

但是,如果我将用户添加到列表中,我再次调用上面的代码以获取更新列表,然后使用此列表将列表提供给组合框 -

 ScripterCombo.DataSource = updatedUserList;

这不幸的是没有更新组合框,但是当我在运行它之后检查DataSource时它会显示新添加的用户。它只是不想显示它。

希望这是有道理的。

由于

1 个答案:

答案 0 :(得分:0)

尝试添加ToList()

ScripterCombo.DataSource = updatedUserList.ToList();