2013-02-14 1 views
1

tabcontrol이 있습니다. tabcontrol의 각 탭 페이지에는 datagridview가 있습니다. 이들은 프로그래밍 방식으로 생성됩니다.탭 페이지의 VB.Net DataGridview는 사용자가 열어 본 경우가 아니면 행 수를 반환하지 않습니다.

나중에 datagridviews에서 값을 읽고 Word 문서에 쓰고 있습니다.

사용자가 탭 페이지를 클릭하면 datagridview에서 올바른 행 수를보고합니다.

사용자가 탭 페이지에서 된 DataGridView .rowcount = 0

내가 실제 행 개수를 반영하기 위해 DataGridView를 강제로 할 수있는 일이 있습니까 조회하지 않은 경우?

나는 다음과 같은 코드를 사용하여 이름 (tcPlanFeeTab)으로 DataGridView에 포함 된 탭으로 이동하고

: 데이터 바인딩 완료 그리드를 강제하는 방법은 (내가 아는)이 없다

  For Each tp As TabPage In frmSvcFee.tcPlanFee.TabPages 
      'find the fee tab 
      If tp.Text = tcPlanFeeTab Then 'this is the fee tab 
       'select the tp so the datagridview is activated 
       tp.Select() 
       For Each ctl As Control In tp.Controls 'find the datagridview on the rates tab 
        If TypeOf ctl Is DataGridView Then 
         Dim D As DataGridView = ctl 
         MessageBox.Show(D.RowCount) 

답변

2

그리드가 표시되기 전에

DataGridView 자체 내에서의 최적화입니다.

가장 좋은 방법은 대신 기본 데이터 소스로 이동하는 것입니다.

+0

+1 현재 보이는 탭 페이지는 이상한 행동을합니다. – SSS

+0

감사합니다. 나는 이것으로 곤란을 겪었다. 나는 눈금 + 탭 컨트롤이 존재한다는 것을 알고 있지만, 나는 그것들을 볼 때까지 그것들처럼 행동하지 않는다. – unholymackerel

+1

예 - 불만 스러울 수 있으며, 많은 사람들을 사로 잡습니다. 본질적으로 datagridview는 성능상의 이유로 두 가지 형태의 "바인딩"을 갖습니다. 하나는 실제 데이터 소스이고 다른 하나는 시각적 인 바인딩입니다. 두 번째 바인딩은 필요할 때만 발생합니다 (그리드가 시각적으로 렌더링 될 때). –