2012-01-10 33 views
1

我有一个困难时刻试图从数据集的实例中获取datagridviewrow对象,我已经通过编程添加了。我这样做是为了使用与我的其他构造函数相同的方法,该构造函数从窗体上的datagridview中的选定行开始工作。DataGridView行设置为DataSet时为空

我的问题是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(); 

回答

0

由于我看不到剩下的代码,我只能假设;然而,今天我在VB.net中遇到了完全相同的问题(我猜这就是C#?),并试图将表转储到List(T)中,或者将它附加到组合框而不是结果。最后,我做了一个全新的表格,复制了绝对必要的代码,并且......它工作正常。这两种形式之间的区别在于我在处理Me.Load的函数中调用了InitializeComponent();我认为它是从程序中自动放到那里的(我使用的是Visual Basic 2010 Express),但它可能在我心不在焉的时候被放置。我把它拿出来,一切按需要工作。为什么这个(额外的?我没有一个自定义的构造函数)调用InitializeComponent()导致绝对没有数据显示(我也不能编程添加行到表),我不知道,作为搜索对于msdn上的InitializeComponent没有帮助。

无论如何,我希望这能解决你自己的问题;请让我们知道如果它或不!