public FixedRowsExtension(GridSplitContainerDescendant split)
        {
            gridSplitContainer1 = split;
            gridControl1        = gridSplitContainer1.Grid as GridControl;
            gridControl1.ForceInitialize();
            gridViewPanel1 = gridControl1.MainView as GridView;
            gridViewPanel1.OptionsMenu.ShowSplitItem       = false;
            gridViewPanel1.OptionsCustomization.AllowGroup = false;

            var scrollBar = gridControl1.Controls.OfType <Control>().FirstOrDefault(x => x is VCrkScrollBar);

            if (scrollBar != null)
            {
                gridControl1.Controls.Remove(scrollBar);
            }

            //add menuItems
            fixedRowAddMenu = new ContextMenu();
            MenuItem add = new MenuItem();

            add.Index  = 0;
            add.Text   = "Add to fixed rows";
            add.Click += add_Click;
            fixedRowAddMenu.MenuItems.Add(add);
            fixedRowRemoveMenu = new ContextMenu();
            MenuItem remove = new MenuItem();

            remove.Index  = 0;
            remove.Text   = "Remove from fixed rows";
            remove.Click += remove_Click;
            fixedRowRemoveMenu.MenuItems.Add(remove);

            //show split
            gridSplitContainer1.ShowSplitView();
            gridSplitContainer1.FixedPanel = SplitFixedPanel.Panel1;

            //raise events
            gridViewPanel1.CustomRowFilter  += gridViewPanel1_CustomRowFilter;
            gridViewPanel1.PopupMenuShowing += gridViewPanel1_PopupMenuShowing;
            gridViewPanel2 = gridSplitContainer1.SplitChildGrid.MainView as GridView;
            gridViewPanel2.CustomRowFilter  += gridViewPanel2_CustomRowFilter;
            gridViewPanel2.PopupMenuShowing += gridViewPanel2_PopupMenuShowing;
            gridViewPanel1.CalcRowHeight    += gridViewPanel2_CalcRowHeight;
            gridViewPanel2.CalcRowHeight    += gridViewPanel2_CalcRowHeight;
            gridViewPanel1.ShowingEditor    += gridViewPanel1_ShowingEditor;
            gridViewPanel1.Layout           += gridViewPanel1_Layout;
            gridSplitContainer1.Grid.ForceInitialize();
            gridViewPanel1.FocusedRowChanged       += gridViewPanel1_FocusedRowChanged;
            gridSplitContainer1.Panel2.SizeChanged += Panel2_SizeChanged;
            gridViewPanel2.RowCountChanged         += gridViewPanel2_RowCountChanged;
            GridViewInfo viewInfo1 = gridViewPanel1.GetViewInfo() as GridViewInfo;

            gridSplitContainer1.SplitterPosition = viewInfo1.ViewRects.ColumnPanel.Bottom;
            GridViewInfo viewInfo2 = gridViewPanel2.GetViewInfo() as GridViewInfo;

            panel2State = viewInfo2.VScrollBarPresence;
        }
        private void ColumnSynk()
        {
            GridViewInfo viewInfo2 = gridViewPanel2.GetViewInfo() as GridViewInfo;

            if (viewInfo2.VScrollBarPresence != panel2State)
            {
                panel2State = viewInfo2.VScrollBarPresence;
                if (viewInfo2.VScrollBarPresence == ScrollBarPresence.Visible)
                {
                    gridViewPanel1.VertScrollVisibility = ScrollVisibility.Always;
                    RefreshData();
                }
                else
                {
                    if (FixedRows.Count != 0 || gridViewPanel1.VertScrollVisibility != ScrollVisibility.Auto)
                    {
                        gridViewPanel1.VertScrollVisibility = ScrollVisibility.Never;
                    }
                }
            }
        }