Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Datagridview未更新数据源_C#_Winforms_Datagridview - Fatal编程技术网

C# Datagridview未更新数据源

C# Datagridview未更新数据源,c#,winforms,datagridview,C#,Winforms,Datagridview,我正在使用Windows窗体应用程序。我在表单上创建了列表,在添加按钮上创建了新窗口。添加新记录时,数据源正在更新,但gridview不显示上次添加的记录。为什么会这样 public MainForm() { InitializeComponent(); BindCompanyData(); } public void BindCompanyData() { List<CompanyListModel> co

我正在使用Windows窗体应用程序。我在表单上创建了列表,在添加按钮上创建了新窗口。添加新记录时,数据源正在更新,但gridview不显示上次添加的记录。为什么会这样

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()在带有代码的新创建表单上:

MainForm mainForm = new MainForm();
mainForm.BindCompanyData();
您应该做的是在
CompanyAddEdit
构造函数请求
MainForm
参数中传递您在按钮中使用的当前表单。因此,您的代码如下所示:

//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();
}

如果单击主窗口中的btn_addCompany,则会打开一个小窗口,在该窗口中应选择公司类型,并且该信息不会在主窗口中更新?那么我该怎么办?@SrustiThakkar很高兴我提供了帮助:)
//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();
}