DevExpress XtraGrid MakeRowVisible - PullRequest
       8

DevExpress XtraGrid MakeRowVisible

1 голос
/ 28 июня 2011

РЕДАКТИРОВАТЬ: проблема связана с тем, когда я вызываю метод. Если я подожду, пока форма отобразится, и вызову метод из меню в самой форме, он будет работать. Но если я установлю строку для отображения до того, как форма закончит рендеринг, это не сработает. Вызывает ли XtraGrid событие после завершения рендеринга?

У меня нет успеха в том, чтобы сделать конкретную строку в сетке видимой, используя ее указатель строки. Я попробовал как метод MakeRowVisible объекта GridView, так и простую настройку свойства FocusedRowHandle ColumnView, оба из которых должны выводить указанную строку.

Примечание: при фокусировке строки с использованием ColumnView.FocusedRowHandle Свойство, Просмотр автоматически делает указанную строку видимой на экран. Метод MakeRowVisible является используется для этой цели. Итак, вы не должен использовать метод MakeRowVisible если вам нужно сфокусировать целевой ряд. Просто назначьте нужный дескриптор строки в ColumnView.FocusedRowHandle имущество. http://documentation.devexpress.com/#WindowsForms/DevExpressXtraGridViewsGridGridView_MakeRowVisibletopic

Я, должно быть, упускаю что-то простое. Спасибо за помощь.

 public void SetVisibleRow(int customerid)
        {

         DevExpress.XtraGrid.Views.Base.ColumnView  vw;
         vw = (DevExpress.XtraGrid.Views.Base.ColumnView) MyGrid.DefaultView;

          for ( int i = 0; i < vw.DataRowCount;  i++)
            {
                 if ((int)vw.GetRowCellValue(i, "custid") == customerid)      
                  {
                    // DevExpress.XtraGrid.Views.Grid.GridView gv;
                    // gv =  (DevExpress.XtraGrid.Views.Grid.GridView) MyGrid.DefaultView;
                    // gv.MakeRowVisible(i,false);

                    vw.FocusedRowHandle = i;
                    break;
                  }
            }

        }

Ответы [ 3 ]

1 голос
/ 09 июля 2011

Если вы вызываете свой метод SetVisibleRow в событии OnLoad формы, сначала обязательно вызовите метод ForceInitialize элемента управления сеткой.

1 голос
/ 28 июня 2011

Проблема решается, если метод вызывается в событии Load сетки.

0 голосов
/ 16 февраля 2015
        gridView.ClearSelection();
        gridView.SelectRow(rowHandle);
        gridView.FocusedRowHandle = rowHandle;
        gridView.TopRowIndex = rowHandle;
...