Не заполняется TextBox
У меня есть приложения WinForms. В нем после прохождения авторизации открывается форма меню, в которой пункт "Настройки". В зависимости от роли открываются разные возможности в настройках. Мне нужно, чтобы при выборе пользователя в comboBox автоматически заполнялись поля textBox. Но сейчас при выборе пользователя из выпадающего списка они не заволняются.
Помогите исправить это. Ниже код формы настроек:
public partial class FormSettingsAdmin : Form
{
public FormSettingsAdmin()
{
InitializeComponent();
}
private void FormSettingsAdmin_Load(object sender, EventArgs e)
{
LoadUserList();
LoadRoleList();
}
private void LoadUserList()
{
string query = "SELECT Username FROM Users";
DataTable usersTable = DataBase.ExecuteQuery(query);
comboBox_ChangeUser.Items.Clear();
foreach (DataRow row in usersTable.Rows)
{
comboBox_ChangeUser.Items.Add(row["Username"].ToString());
}
}
private void LoadRoleList()
{
string query = "SELECT NameRole FROM RoleUsers";
DataTable rolesTable = DataBase.ExecuteQuery(query);
comboBox_RoleSettings.Items.Clear();
foreach (DataRow row in rolesTable.Rows)
{
comboBox_RoleSettings.Items.Add(row["NameRole"].ToString());
}
}
private void comboBox_ChangeUser_SelectedIndexChanged(object sender, EventArgs e)
{
string selectedUsername = comboBox_ChangeUser.SelectedItem.ToString();
LoadUserDetails(selectedUsername);
}
private void LoadUserDetails(string username)
{
string query = @"
SELECT u.Name, u.Email, u.PhoneNumber, u.Username, r.NameRole
FROM Users u
INNER JOIN UserAndRoles ur ON u.id = ur.idUser
INNER JOIN RoleUsers r ON ur.idRole = r.id
WHERE u.Username = @username";
using (SqlConnection connection = new SqlConnection(DataBase.ConnectionString))
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@username", username);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
if (reader.Read())
{
SetUserName(reader["Name"].ToString());
SetUserEmail(reader["Email"].ToString());
SetUserPhoneNumber(reader["PhoneNumber"].ToString());
SetUserLogin(reader["Username"].ToString());
SetUserRole(reader["NameRole"].ToString());
}
else
{
MessageBox.Show("Пользователь не найден или данные не возвращаются.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void SetUserName(string name)
{
textBox_NameUserSettings.Text = name;
}
private void SetUserEmail(string email)
{
textBoxEmailSettings.Text = email;
}
private void SetUserPhoneNumber(string phoneNumber)
{
textBoxPhoneNumberSettings.Text = phoneNumber;
}
private void SetUserLogin(string login)
{
textBoxLoginSettings.Text = login;
}
private void SetUserRole(string role)
{
comboBox_RoleSettings.SelectedItem = role;
}
private void button_SaveSettings_Click(object sender, EventArgs e)
{
string username = comboBox_ChangeUser.SelectedItem.ToString();
string newRole = comboBox_RoleSettings.SelectedItem.ToString();
string query = @"
UPDATE ur
SET ur.idRole = (SELECT id FROM RoleUsers WHERE NameRole = @role)
FROM UserAndRoles ur
INNER JOIN Users u ON ur.idUser = u.id
WHERE u.Username = @username";
using (SqlConnection connection = new SqlConnection(DataBase.ConnectionString))
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@role", newRole);
command.Parameters.AddWithValue("@username", username);
connection.Open();
command.ExecuteNonQuery();
MessageBox.Show("Роль пользователя успешно обновлена.", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void button_ExitSettings_Click(object sender, EventArgs e)
{
this.Close();
}
}
Фото формы