DataGridView在设置为DataSet时为空

时间:2012-01-10 10:19:20

标签: datagridview dataset

我很难尝试从编程方式添加的数据集实例中获取datagridviewrow对象。我这样做是为了使用与我的其他构造函数相同的方法,该构造函数从表单上的datagridview中的选定行开始工作。

我的问题是datagridview.rows.count始终为0。阅读“ASME_AllowableStress.Rows.Count”,我得到2600行的完整表格。我不知道我没有删除或声明错误,没有添加datagridview行。列似乎已添加。

public Material(int mat_id)
    {
        this.ID = mat_id;
        MaterialDataSet materialDataSet = new MaterialDataSet();
        MaterialDataSetTableAdapters.ASME_2009_AllowableStressTableAdapter  aSME_2009_AllowableStressTableAdapter = new MaterialDataSetTableAdapters.ASME_2009_AllowableStressTableAdapter();
        MaterialDataSetTableAdapters.TableAdapterManager tableAdapterManager = new MaterialDataSetTableAdapters.TableAdapterManager();
        aSME_2009_AllowableStressTableAdapter.Fill(materialDataSet.ASME_2009_AllowableStress);
        DataGridView materialDataGridView = new DataGridView();
        DataView myView = materialDataSet.Tables[0].DefaultView;

        materialDataGridView.DataSource = myView;      


        MessageBox.Show(Convert.ToString(materialDataSet.ASME_2009_AllowableStress.Rows.Count));
        MessageBox.Show(Convert.ToString(materialDataGridView.Rows.Count));
        DataGridViewRow row = new DataGridViewRow();

1 个答案:

答案 0 :(得分:0)

由于我看不到你的其余代码,我只能假设;但是,我今天在VB.net中遇到了同样的问题(我猜这是C#?),并试图将表转储到List(T)或将其附加到组合框而不是没有结果。

最后,我制作了一个全新的表格,复制了绝对必要的代码,并且...它有效。这两种形式之间的区别在于我在处理Me.Load的函数中调用了 InitializeComponent();我认为它是从程序中自动放入的(我使用的是Visual Basic 2010 Express),但它可能是我在心不在焉的时刻放置的。我拿出来了,一切都按照要求运作。

为什么这个(额外?我没有自定义构造函数)调用InitializeComponent()导致绝对没有数据显示(我也无法以编程方式向表中添加行),我不知道,因为正在搜索msdn上的InitializeComponent没有帮助。

无论如何,我希望这可以解决你自己的问题;如果它有或没有,请告诉我们!