2011-07-01 3 views
0

DataGridView에 표시된 현재 행 수를 출력하기 위해 레이블에 RowCount 속성을 바인딩하려고합니다.Windows Forms : DataGridView RowCount 속성을 레이블에 바인딩

나는 다음을 시도했다 : lblArticleCount.DataBindings.Add ("Text", DataGrid, "RowCount");

처음에는 정확히 원하는대로 작동하지만 DataGridView가 업데이트되고 더 많거나 적은 행이 있으면 레이블은 그대로 유지됩니다. 새 행 수는 표시되지 않습니다.

내가 잘못된 길을 가고있는 것처럼 보입니다. 어떻게 해결하겠습니까? 내 목표는 새로운 카운트를 라벨에 수동으로 설정하는 이벤트에 반응하는 것을 피하는 것이 었습니다. 다른 방법이 없습니까?

감사합니다.

+0

나는 그리드의 데이터 소스 행 수에 레이블을 바인딩하려고한다. –

답변

-1

이것은 당신이 무슨 의도 아마 아니지만, 그것은 작동합니다 :

 Label showRowCount = new Label(); 
     DataGridView dgv = new DataGridView(); 
     dgv.RowsAdded += new DataGridViewRowsAddedEventHandler(dgv_RowsCountChanged); 
     dgv.RowsRemoved += new DataGridViewRowsAddedEventHandler(dgv_RowsCountChanged); 
    } 

    void dgv_RowsCountChanged(object sender, DataGridViewRowsAddedEventArgs e) 
    { 
     showRowCount.Text = dgv.RowCount; 
    } 
-1

를 구현해야합니다 단지는 단색입니다 길거리. 데이터 바인딩은 일반적으로 양방향 바인딩입니다. UI 요소가 변경되면 비즈니스 개체가 통보되고 역으로 비즈니스 개체가 변경되면 UI 요소가 변경됩니다. 단방향 데이터 바인딩 만 구현 한 것 같습니다.

+0

필자가 작성한 것은 첫 번째 게시물에서 보여준 선입니다. 양방향 데이터 바인딩을 얻으려면 무엇을 변경해야합니까? – Patrick

0

왜 RowsAdded 및 RowsRemoved evnets를 사용하여 dataGridView의 행 수를 계산하지 않습니까?

public partial class Form1 : Form 
{ 
    int rowsCount; 
    public Form1() 
    { 
     InitializeComponent(); 
     dataGridView1.Columns.Add("col1", "Column 1"); 
     dataGridView1.RowsAdded += new DataGridViewRowsAddedEventHandler(dataGridView1_RowsAdded); 
     dataGridView1.RowsRemoved += new DataGridViewRowsRemovedEventHandler(dataGridView1_RowsRemoved); 
    } 

    private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) 
    { 
     rowsCount++; 
     CountRows(); 
    } 

    private void dataGridView1_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e) 
    { 
     rowsCount--; 
     CountRows(); 
    } 

    private void CountRows() 
    { 
     label1.Text = String.Format("Number of all rows {0}", rowsCount); 
    } 
} 
관련 문제