2015-04-04 4 views
0

В моем приложении WinForms у меня есть три вкладки, а на каждой вкладке - gatagridview. Если я нажимаю btn для отображения записей в tab1 datagridview, он заполняет BUT, если я перехожу на tab2 и нажимаю кнопку, чтобы отобразить другую запись, сначала отображает мне нужные записи, а затем отправляет мне те же записи в tab1 или tab3, если нажата другая кнопка.Как правильно получить datagridview

Затем он заполняет мне ту же запись из tab1, tab2 и tab3.

Как я могу решить эту проблему ИЛИ это я объявлял переменную datatable dt в глобальном масштабе?

+1

10 Нам необходимо увидеть соответствующие части вашего кода. – Marco

ответ

1

Если вы хотите, чтобы у 3 DGVs был свой указатель записи, вы не должны использовать DataTable как их DataSource. Вместо этого используйте промежуточный BindingSource для каждого из них:

// assume a few DataGridViews..: 
    DataGridView DGV1 = new DataGridView(); 
    DataGridView DGV2 = new DataGridView(); 
    DataGridView DGV3 = new DataGridView(); 

    // and a common DataTable: 
    DataTable DT = new DataTable(); 
    //.. 

    // we need a separate BindingSource for each DGV: 
    BindingSource BS1 = new BindingSource(); 
    BindingSource BS2 = new BindingSource(); 
    BindingSource BS3 = new BindingSource(); 

    // each is bound to the DataTable 
    BS1.DataSource = DT; 
    BS2.DataSource = DT; 
    BS3.DataSource = DT; 

    // now we set them to be the DatSource of the DGVs: 
    DGV1.DataSource = BS1; 
    DGV2.DataSource = BS2; 
    DGV3.DataSource = BS3; 

    // now we can set the record pointers separately: 
    BS1.Position = 3;   
    BS2.Position = 0;   
    BS3.Position = BS3.Count - 1; 

    // or set filters: 
    BS2.Filter = "someCondition"; 

    // or set sorts: 
    BS3.Filter = "someSort"; 
+0

@ TaW Большое спасибо. Один вопрос, хотя, если у меня есть еще 2 DGV, как мне установить свою позицию? Могу ли я сделать так: 'BS4.Position = 2 BS5.Position = 1' без счета-1? – mikybrain

+0

Да, вы можете создать любое количество «BindingSources» и управлять ими любым способом, который вам нужен. Просто сделайте их «DataSources» других DGV и должны быть хорошими. «BS3.Position = BS3.Count - 1;» был всего лишь примером того, как вы можете очень хорошо показать запись __last__ '(count - 1)' – TaW

+0

thnx. Я не знал этого с помощью 'BindingSources'. Желаю вам приятной ночи и пасха – mikybrain

Смежные вопросы