简体   繁体   中英

C# Textbox with databinding is not updating

I have a classic Form with 3 textboxes and 1 combobox. Combobox shows list of Users and 3 textboxes should contain details about the selected user in the combobox. For selected user I have a special attribute (as shown below) which I am using as data source. This is ok only on the first run. When the form is shown, changing user in combobox has no effect.

public partial class UserAdministration : Form
{
    private readonly DataManager _dataManager = DataManager.Instance;
    private User _selectedUser;

    public UserAdministration()
    {
        InitializeComponent();
    }

    private void UserAdministration_Load(object sender, EventArgs e)
    {
        AddUsers();
        textBoxName.DataBindings.Add("Text", _selectedUser, "Name");
        textBoxSurname.DataBindings.Add("Text", _selectedUser, "Surname");
        textBoxPassword.DataBindings.Add("Text", _selectedUser, "Password");
    }

    private void AddUsers()
    {
        var users = _dataManager.UserProvider.GetAll().Select(pair => pair.Value).ToList();
        comboBoxUsers.DataSource = new BindingSource { DataSource = users };
        comboBoxUsers.DisplayMember = "ListViewText";
        if (users.Count > 0)
            comboBoxUsers.SelectedIndex = 0;
    }

    private void comboBoxUsers_SelectedIndexChanged(object sender, EventArgs e)
    {
        _selectedUser = comboBoxUsers.SelectedItem as User;
    }
}

What am I missing? What is wrong with data binding?

to bind your datasource to cb use this code:

comboBoxUsers.DataSource = users (directly to you datasource);

to bind the same data to textbox do it like this:

textbox1.DataBindings.Add("Text", users, "username", true);

the only point is, that you need to link both controls to the same ds instance

I have a form with ONLY a textbox that I wanted to bind to database column.

When I used the 'properties' settings to data-bind that textbox to one column, it created the bindingSource1 and table adapter for me.

When I clicked the SAVE button, I simply added bindingSource1.EndEdit(); and then it saved correctly to the database.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM