代码之家  ›  专栏  ›  技术社区  ›  Srusti Thakkar

Datagridview未更新数据源

  •  0
  • Srusti Thakkar  · 技术社区  · 8 年前

    我正在使用Windows窗体应用程序。我在表单上创建了列表,在Add按钮上创建了新窗口。添加新记录时,数据源正在更新,但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() 方法。

     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 回复  |  直到 8 年前
        1
  •  1
  •   Aleksa Ristic    8 年前

    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();
    }
    
    推荐文章