如何使用BackgroundWorker加载DataGridView

时间:2012-07-09 08:39:19

标签: datagridview backgroundworker

我在C#项目上工作

在我的项目中,我有2个窗口表格(表格A和表格B)。表格A是表格B​​的父母。 此外,我在表单A中有一个DataGridView,在表单B上有一个按钮。

单击此按钮时(在表单B中)。表单A中的DataGridView必须重新加载。为此,我在表单B中创建一个BackgroundWorker并从表单A调用LoadDataGridview方法。

但我的问题是:

有时(并非总是)当按钮单击时我给出一个问题(空对象)和DataGridview行消失,并且在直径中可见2条红线。

我的LoadDataGridview方法是这样的:

public void LoadDataGridview()
{

MyMethod.DGV.SaveDataGridViewMetaData(dgvPersons);


        objDataViewPersons = SqlServerDB.SqlMethod.GetContentOfTableWithDataView("Persons");

        objDataViewPersons.Table.Columns.Add("Department2", typeof(string));            

        if (objDataViewPersons.Table.Rows.Count == 0)
        {
            btnEditPerson.Enabled = false;
            btnLastPerson.Enabled = false;
            btnShow.Enabled = false;
            btnPrint.Enabled = false;
        }

        foreach (DataRow drcurrent in objDataViewPersons.Table.Rows)
        {
            drcurrent["Department2"] = GlobalVar.CmbControl.GetNam(ComboBoxControl.ListName.Department, ComboBoxControl.ListInput.ID, drcurrent["Department"].ToString());
        }

        objBindingSource.DataSource = objDataViewPersons;

        MyMethod.DGV.RestoreDataGridViewMetaData(dgvPersons);
    }

如何快速重新加载DataGridView并且没有错误?

1 个答案:

答案 0 :(得分:0)

我会考虑创建用户控件。

用户控件是一种制作自定义,可重用组件的方法。用户控件可以包含其他控件,但必须由表单托管。

这样,您可以创建单独的控件来管理每个数据网格。

查看此链接,了解它们的用途和用途: -

http://msdn.microsoft.com/en-us/library/aa302342.aspx