2012-01-10 5 views
1

프로그래밍 방식으로 추가 한 데이터 집합의 인스턴스에서 datagridviewrow 개체를 가져 오는 데 어려움을 겪고 있습니다. 양식의 DataGridview에서 선택된 행에서 작동하는 다른 생성자와 동일한 메서드를 사용하는 방법으로이 작업을 수행했습니다.DataSet에 설정된 경우 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(); 

답변

0

나는 나머지 코드를 볼 수 없으므로 나는 추측 할 수 있습니다. 그러나 나는 VB.net에서 똑같은 문제를 겪었고 (C#을 추측하고 있나?) List를 T로 Listbox하거나 콤보 박스에 붙이는 대신 아무런 결과가 없다.

결국 나는 완전히 새로운 형식을 만들고, 절대적으로 필요한 코드를 복사하여 ... 작동했습니다. 두 양식의 차이점은 내가 Me2Load를 처리하는 InitializeComponent() 함수를 호출했기 때문입니다. 나는 그것이 프로그램에서 자동적으로 (나는 Visual Basic 2010 Express를 사용하고있다) 놓 였다고 생각하지만, 결석 한 순간에 나에 의해 배치되었을지도 모른다. 나는 그것을 꺼내 모든 것이 원하는대로 작동한다.

InitializeComponent()를 호출하면 데이터가 표시되지 않고 (테이블에 행을 프로그래밍 방식으로 추가 할 수 없음) 이유는 무엇입니까? 검색 할 수 없다는 이유는 무엇입니까? msdn의 InitializeComponent가 도움이되지 않았습니다.

어쨌든이 방법으로 문제가 해결되기를 바랍니다. 그렇지 않든 우리에게 알려주십시오!

관련 문제