1

编辑:问题与我调用该方法时有关。如果我等待表单显示,并从表单本身的菜单中调用该方法,它就可以工作。但是如果我在表单完成渲染之前设置要显示的行,它就不起作用。XtraGrid 完成渲染后是否引发事件?

使用行句柄使网格中的特定行可见,我没有取得任何成功。我已经尝试了 GridView 的 MakeRowVisible 方法,还简单地设置了 ColumnView 的 FocusedRowHandle 属性,这两者都应该将指定的行显示在视图中。

注意:当使用 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;
                  }
            }

        }
4

3 回答 3

1

如果在网格的 Load 事件中调用该方法,问题就解决了。

于 2011-06-28T18:58:59.767 回答
1

如果您SetVisibleRow在窗体的OnLoad事件中调用您的方法,请确保首先调用网格控件的ForceInitialize方法。

于 2011-07-08T21:32:47.080 回答
0
        gridView.ClearSelection();
        gridView.SelectRow(rowHandle);
        gridView.FocusedRowHandle = rowHandle;
        gridView.TopRowIndex = rowHandle;
于 2015-02-16T15:48:47.870 回答