Datagridview не обновляет источник данных - PullRequest
0 голосов
/ 30 августа 2018

Я использую приложение Windows Form. Я создал в форме для листинга и на кнопку Добавить, у меня есть создать новое окно. Когда добавляется новая запись, источник данных обновляется, но в виде сетки не отображается последняя добавленная запись. Почему это происходит?

public MainForm()
    {
        InitializeComponent();
        BindCompanyData();
    }

 public void BindCompanyData()
    {
        List<CompanyListModel> companyListModel = new List<CompanyListModel>();
        companyListModel =  _obiClient.GetCompanies();
        companyDataGrid.DataSource = null;
        companyDataGrid.DataSource = companyListModel;
        companyDataGrid.Refresh();
        companyDataGrid.CellClick += new DataGridViewCellEventHandler(DatGridCell_Click);
    }

private void btn_addCompany_Click(object sender, EventArgs e)
    {
        CompanyAddEdit companyAddEdit = new CompanyAddEdit();
        companyAddEdit.ShowForm();
    }

На кнопку Добавить. Открыть новую форму. и при закрытии этой формы я вызвал BindCompanyData() метод.

 private void btn_save_Click(object sender, EventArgs e)
    {
        string selectedItem = cmbbx_companyType.SelectedItem.ToString();            
        WriteXML(selectedItem);
        this.Close();
        MainForm mainForm = new MainForm();
        mainForm.BindCompanyData();
    }

Чего не хватает?

1 Ответ

0 голосов
/ 30 августа 2018

Ваша проблема в том, что вы запускаете BindCompanyData(); во вновь созданной форме с вашим кодом:

MainForm mainForm = new MainForm();
mainForm.BindCompanyData();

Что вам нужно сделать, это внутри CompanyAddEdit запроса конструктора для параметра MainForm form и передать текущую форму, которую вы используете в кнопке. Итак, ваш код выглядит так:

//Inside CompanyAddEdit form
class CompanyAddEdit : Form
{
    MainForm passedForm;

    public CompanyAddEdit(MainForm form)
    {
        this.passedForm = form;
    }
    //other code
    private void btn_save_Click(object sender, EventArgs e)
    {
        string selectedItem = cmbbx_companyType.SelectedItem.ToString();            
        WriteXML(selectedItem);
        this.Close();

        passedForm.BindCompanyData();
   }
}



//Inside main form
private void btn_addCompany_Click(object sender, EventArgs e)
{
    CompanyAddEdit companyAddEdit = new CompanyAddEdit(this);
    companyAddEdit.ShowForm();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...