示例#1
0
        private static BvgCell GetCell(BvgRow row, BvgColumn col, T item, BvgGrid _bvgGrid, bool SetValue)
        {
            BvgCell cell = new BvgCell
            {
                bvgRow    = row,
                bvgColumn = col,
                HasCol    = true,
                bvgGrid   = _bvgGrid,
            };

            if (SetValue)
            {
                cell.Value = col.prop.GetValue(item, null).ToString();
            }


            if (col.IsFrozen)
            {
                cell.CssClass = CellStyle.CellFrozen.ToString();
            }
            else
            {
                cell.CssClass = CellStyle.CellNonFrozen.ToString();
            }

            cell.UpdateID();

            return(cell);
        }
        public static void GetColumns(ColProp[] props, BvgGrid <T> _bvgGrid, T[] list, bool UpdateUI)
        {
            int h = _bvgGrid.bvgSettings.HeaderHeight - 10;

            if (!_bvgGrid.Columns.Any())
            {
                _bvgGrid.Columns = new BvgColumn <T> [props.Count()];
                for (ushort i = 0; i < props.Count(); i++)
                {
                    _bvgGrid.Columns[i] = getCol(i, props[i], h, _bvgGrid);
                }
            }
            else
            {
                _bvgGrid.Columns = new BvgColumn <T> [props.Count()];
                string[] UpdatePkg = new string[props.Count() * 4];
                short    j         = -1;
                for (ushort i = 0; i < props.Count(); i++)
                {
                    _bvgGrid.Columns[i] = getCol(i, props[i], h, _bvgGrid);

                    UpdatePkg[++j] = i.ToString();
                    UpdatePkg[++j] = props[i].prop.Name;
                    UpdatePkg[++j] = _bvgGrid.Columns[i].ColWidth.ToString();
                    UpdatePkg[++j] = _bvgGrid.Columns[i].ColWidthSpan.ToString();
                }

                if (_bvgGrid.Rows.Any())
                {
                    foreach (BvgRow <T> r in _bvgGrid.Rows)
                    {
                        foreach (BvgCell <T> c in r.Cells)
                        {
                            c.bvgColumn = _bvgGrid.Columns[c.bvgColumn.ID];
                        }
                    }
                }


                if (UpdateUI)
                {
                    BVirtualGridCJsInterop.UpdateColContentsBatch(UpdatePkg);
                    RefreshRows(list, _bvgGrid, true, 0);
                }
            }



            if (_bvgGrid.SortState.Item1)
            {
                if (_bvgGrid.Columns.Any(x => x.prop.Name.Equals(_bvgGrid.SortState.Item2)))
                {
                    BvgColumn <T> sortedCol2 = _bvgGrid.Columns.Single(x => x.prop.Name.Equals(_bvgGrid.SortState.Item2));

                    sortedCol2.IsSorted = true;
                    sortedCol2.IsAscendingOrDescending = _bvgGrid.SortState.Item3;
                }
            }
        }
示例#3
0
        private static void RefreshRows(T[] list, BvgGrid _bvgGrid, bool updateWidths)
        {
            short i  = -1;
            short i2 = -1;
            byte  g  = 0;

            string[] UpdatePkg = new string[_bvgGrid.Rows.Count() * _bvgGrid.Rows[0].Cells.Count() * 3];


            string[] UpdatePkg2 = new string[1];
            if (updateWidths)
            {
                UpdatePkg2 = new string[_bvgGrid.Rows.Count() * _bvgGrid.Rows[0].Cells.Count() * 3];
            }

            foreach (T item in list)
            {
                foreach (BvgCell c in _bvgGrid.Rows[g].Cells.Where(x => x.HasCol))
                {
                    c.Value = c.bvgColumn.prop.GetValue(item, null).ToString();


                    UpdatePkg[++i] = c.ID;
                    UpdatePkg[++i] = c.Value;

                    if (c.bvgColumn.prop.PropertyType.Equals(typeof(bool)))
                    {
                        UpdatePkg[++i] = "b";
                    }
                    else
                    {
                        UpdatePkg[++i] = "s";
                    }

                    if (updateWidths)
                    {
                        UpdatePkg2[++i2] = c.ID;
                        UpdatePkg2[++i2] = c.bvgColumn.ColWidth.ToString();
                        UpdatePkg2[++i2] = c.bvgColumn.ColWidthWithoutBorder.ToString();
                    }
                }
                g++;
            }



            BvgJsInterop.UpdateRowContentBatch(UpdatePkg);

            if (updateWidths)
            {
                BvgJsInterop.UpdateRowWidthsBatch(UpdatePkg2);
            }
        }
示例#4
0
        public void UpdateStyle2(BvgGrid <TItem> _bvgGrid)
        {
            //without this it was generating old data, weird but fact.
            //now we are sure that we have last version of bvgGrid state
            bvgGrid = _bvgGrid;


            blazorCSS.RemoveSelector(".myGridArea");
            blazorCSS.RemoveSelector(".myContainerFrozen");
            blazorCSS.RemoveSelector(".myContainerNonFrozen");

            GenerateCSSGridmyGridArea();

            GenerateCSSGridFrozenCSS();
            GenerateCSSGridNonFrozenCSS();



            BVirtualGridCJsInterop.UpdateStyle(StyleID2, GetString(StyleID2));
        }
 private static BvgColumn <T> getCol(ushort id, ColProp p, int h, BvgGrid <T> _bvgGrid)
 {
     return(new BvgColumn <T>
     {
         ID = id,
         prop = p.prop,
         SequenceNumber = p.SequenceNumber,
         bvgGrid = _bvgGrid,
         CssClass = HeaderStyle.HeaderRegular.ToString(),
         IsFrozen = p.IsFrozen,
         ColWidth = p.ColWidth,
         bsSettings = new BsSettings(string.Concat("Splitter" + p.prop.Name))
         {
             VerticalOrHorizontal = false,
             index = id,
             width = 5,
             height = h,
             BgColor = _bvgGrid.bvgSettings.HeaderStyle.BackgroundColor,
             //BgColor = "red",
         }
     });
 }
示例#6
0
        //bool EnabledRender = true;

        //protected override bool ShouldRender()
        //{
        //    return EnabledRender;
        //}

        protected override Task OnParametersSetAsync()
        {
            //BlazorWindowHelper.BlazorTimeAnalyzer.LogAllAdd = true;

            bvgGrid = new BvgGrid
            {
                IsReady        = true,
                Name           = TableName,
                RowsTotalCount = SourceList.Count(),
                bvgSettings    = bvgSettings,
                AllProps       = typeof(TItem).GetProperties(BindingFlags.Public | BindingFlags.Instance),
                SortState      = Tuple.Create(false, new BvgColumn()),
            };


            bvgGrid.ColumnsOrderedList          = ColumnsHelper.GetColumnsOrderedList(bvgGrid);
            bvgGrid.ColumnsOrderedListFrozen    = bvgGrid.ColumnsOrderedList.Where(x => x.IsFrozen).ToArray();
            bvgGrid.ColumnsOrderedListNonFrozen = bvgGrid.ColumnsOrderedList.Where(x => x.IsFrozen == false).ToArray();


            ColProp[] c = bvgGrid.ColumnsOrderedList.Where(x => x.IsFrozen == false).ToArray();

            bvgGrid.NonFrozenColwidthSumsByElement = new int[c.Count()];
            int j = 0;

            for (int i = 0; i < c.Count(); i++)
            {
                j += c[i].ColWidth;
                bvgGrid.NonFrozenColwidthSumsByElement[i] = j;
            }

            c = null;


            SortedRowsList = SourceList.ToArray();

            return(base.OnParametersSetAsync());
        }
示例#7
0
        public static void GetRows(T[] list, BvgGrid _bvgGrid)
        {
            ushort k = 0;

            if (!_bvgGrid.Rows.Any())
            {
                _bvgGrid.Rows = new BvgRow[list.Count()];

                ushort j = 0;
                ushort g = 0;
                foreach (T item in list)
                {
                    BvgRow row = new BvgRow
                    {
                        ID      = k++,
                        bvgGrid = _bvgGrid,
                        Cells   = new BvgCell[_bvgGrid.Columns.Count()],
                    };


                    row.IsEven = row.ID % 2 == 0;

                    g = 0;
                    foreach (BvgColumn col in _bvgGrid.Columns)
                    {
                        row.Cells[g] = GetCell(row, col, item, _bvgGrid, true);
                        g++;
                    }

                    _bvgGrid.Rows[j] = row;
                    j++;
                }
            }
            else
            {
                RefreshRows(list, _bvgGrid, false);
            }
        }
        public static void GetRows(T[] list, BvgGrid <T> _bvgGrid, ushort skip)
        {
            ushort k = 0;

            if (!_bvgGrid.Rows.Any())
            {
                _bvgGrid.Rows = new BvgRow <T> [list.Count()];

                ushort j = 0;
                ushort g = 0;
                foreach (T item in list)
                {
                    BvgRow <T> row = new BvgRow <T>
                    {
                        ID            = k++,
                        IndexInSource = (ushort)(k + skip),
                        bvgGrid       = _bvgGrid,
                        Cells         = new BvgCell <T> [_bvgGrid.Columns.Count()],
                    };

                    g = 0;
                    foreach (BvgColumn <T> col in _bvgGrid.Columns)
                    {
                        row.Cells[g] = GetCell(row, col, item, _bvgGrid);
                        g++;
                    }

                    _bvgGrid.Rows[j] = row;
                    j++;
                }
            }
            else
            {
                RefreshRows(list, _bvgGrid, false, skip);
            }
        }
示例#9
0
        private static double GetScrollPositionForColumn(string ColName, bool AlignLeftOrRight, BvgGrid <TItem> _bvgGrid)
        {
            if (!_bvgGrid.ColumnsOrderedListNonFrozen.Any(x => x.prop.Name.Equals(ColName)))
            {
                return(0);
            }

            double result = 0;


            ColProp a     = _bvgGrid.ColumnsOrderedListNonFrozen.Single(x => x.prop.Name.Equals(ColName));
            int     index = _bvgGrid.ColumnsOrderedListNonFrozen.ToList().IndexOf(a);

            string s = string.Empty;

            for (int i = 0; i < _bvgGrid.NonFrozenColwidthSumsByElement.Count(); i++)
            {
                s += _bvgGrid.NonFrozenColwidthSumsByElement[i] + " ";
            }


            result = _bvgGrid.NonFrozenColwidthSumsByElement[index] - a.ColWidth + 5;

            if (!AlignLeftOrRight)
            {
                result -= _bvgGrid.NonFrozenTableWidth;
            }

            return(result);
        }
示例#10
0
        private static void RefreshRows(T[] list, BvgGrid <T> _bvgGrid, bool updateWidths, int skip)
        {
            //BlazorWindowHelper.BlazorTimeAnalyzer.Add("Refresh rows start", MethodBase.GetCurrentMethod());
            short i      = -1;
            short i1     = -1;
            short i2     = -1;
            short i3     = -1;
            byte  g      = 0;
            int   lenght = _bvgGrid.Rows.Count() * _bvgGrid.Rows[0].Cells.Count();

            string[] PkgIDs = new string[lenght];

            string[] UpdatePkg = new string[lenght * 2];



            string[] UpdatePkg2 = new string[1];
            if (updateWidths)
            {
                UpdatePkg2 = new string[lenght];
            }

            string[] UpdatePkgClass = new string[1];
            if (!updateWidths)
            {
                UpdatePkgClass = new string[lenght];
            }


            foreach (T item in list)
            {
                if (!updateWidths)
                {
                    _bvgGrid.Rows[g].IndexInSource = (ushort)(g + skip + 1);
                }

                foreach (BvgCell <T> c in _bvgGrid.Rows[g].Cells)
                {
                    c.Value = c.bvgColumn.prop.GetValue(item, null).ToString();

                    PkgIDs[++i1] = c.ID;

                    UpdatePkg[++i] = c.Value;

                    if (c.bvgColumn.prop.PropertyType.Equals(typeof(bool)))
                    {
                        UpdatePkg[++i] = "b";
                    }
                    else
                    {
                        UpdatePkg[++i] = "s";
                    }


                    if (!updateWidths)
                    {
                        c.UpdateCssClass();
                        UpdatePkgClass[++i3] = c.CssClassFull;
                    }

                    if (updateWidths)
                    {
                        UpdatePkg2[++i2] = c.bvgColumn.ColWidth.ToString();
                    }
                }
                g++;
            }

            //BlazorWindowHelper.BlazorTimeAnalyzer.Add("js calls start", MethodBase.GetCurrentMethod());


            //BlazorWindowHelper.BlazorTimeAnalyzer.Add("js calls 1 start", MethodBase.GetCurrentMethod());
            BVirtualGridCJsInterop.UpdateElementContentBatchMonoByteArray(PkgIDs, UpdatePkg);

            if (!updateWidths)
            {
                //BlazorWindowHelper.BlazorTimeAnalyzer.Add("js calls 2 start", MethodBase.GetCurrentMethod());
                BVirtualGridCJsInterop.UpdateCellClassBatchMonoByteArray(PkgIDs, UpdatePkgClass);
            }

            if (updateWidths)
            {
                //BlazorWindowHelper.BlazorTimeAnalyzer.Add("js calls 3 start", MethodBase.GetCurrentMethod());
                BVirtualGridCJsInterop.UpdateRowWidthsBatch(PkgIDs, UpdatePkg2);
            }
            //BlazorWindowHelper.BlazorTimeAnalyzer.Add("js calls end", MethodBase.GetCurrentMethod());

            //BlazorWindowHelper.BlazorTimeAnalyzer.Add("Refresh rows end", MethodBase.GetCurrentMethod());
        }
示例#11
0
        private static BvgCell <T> GetCell(BvgRow <T> row, BvgColumn <T> col, T item, BvgGrid <T> _bvgGrid)
        {
            BvgCell <T> cell = new BvgCell <T>
            {
                bvgRow    = row,
                bvgColumn = col,
                bvgGrid   = _bvgGrid,
                Value     = col.prop.GetValue(item, null).ToString(),
                ID        = string.Concat("C", col.ID, "R", row.ID),
            };



            if (col.IsFrozen)
            {
                cell.CssClassBase = CellStyle.CF.ToString();
            }
            else
            {
                cell.CssClassBase = CellStyle.CNF.ToString();
            }

            return(cell);
        }
示例#12
0
        public static void ScrollIntoViewVertical(bool AlignTopOrBottom, ushort RowIndexInSource, string ColName, BvgGrid <TItem> _bvgGrid)
        {
            double d = (RowIndexInSource - 1) * _bvgGrid.bvgSettings.RowHeight;

            if (!AlignTopOrBottom)
            {
                d -= (_bvgGrid.DisplayedRowsCount - 3) * _bvgGrid.bvgSettings.RowHeight;
            }

            _bvgGrid.ActiveCell = Tuple.Create(true, RowIndexInSource, ColName);

            _bvgGrid.VerticalScroll.compBlazorScrollbar.SetScrollPosition(d);

            _bvgGrid.SetScrollTop(0);
        }
示例#13
0
        public CssHelper(BvgGrid <TItem> _bvgGrid)
        {
            bvgGrid = _bvgGrid;

            GenerateCSS();
        }
示例#14
0
        public static ColProp[] GetColumnsOrderedList(BvgGrid bvgGrid)
        {
            int ColsCount = bvgGrid.AllProps.Count() - bvgGrid.bvgSettings.HiddenColumns.Count();

            ColProp[] result = new ColProp[ColsCount];


            PropertyInfo[] AllPropsWithoutHidden = new PropertyInfo[ColsCount];


            int j = 0;

            foreach (var item in bvgGrid.AllProps)
            {
                if (!bvgGrid.bvgSettings.HiddenColumns.Values.Any(x => x.Equals(item.Name, StringComparison.InvariantCultureIgnoreCase)))
                {
                    AllPropsWithoutHidden[j] = item;
                    j++;
                }
            }


            bool HasFrozenColumns           = bvgGrid.bvgSettings.FrozenColumnsListOrdered.Count() > 0;
            bool HasNonFrozenColumnsOrdered = bvgGrid.bvgSettings.NonFrozenColumnsListOrdered.Count() > 0;

            if (!HasFrozenColumns && !HasNonFrozenColumnsOrdered)
            {
                foreach (var item in AllPropsWithoutHidden)
                {
                    result[j] = new ColProp()
                    {
                        prop     = item,
                        IsFrozen = false,
                    };
                }
            }
            else
            {
                List <OrderItem> list1 = new List <OrderItem>();

                foreach (var item in AllPropsWithoutHidden)
                {
                    list1.Add(new OrderItem
                    {
                        SequenceNumber = (ushort)(list1.Count + AllPropsWithoutHidden.Count() + 1),
                        Name           = item.Name,
                        prop           = item,
                        IsFrozen       = false,
                    });
                }

                if (HasFrozenColumns && !HasNonFrozenColumnsOrdered)
                {
                    ushort k = 0;
                    foreach (var item in bvgGrid.bvgSettings.FrozenColumnsListOrdered.Values)
                    {
                        if (list1.Any(x => x.Name.Equals(item, StringComparison.InvariantCultureIgnoreCase)))
                        {
                            OrderItem i = list1.Single(x => x.Name.Equals(item, StringComparison.InvariantCultureIgnoreCase));
                            i.SequenceNumber = k;
                            i.IsFrozen       = true;
                            k++;
                        }
                    }
                    result = list1.OrderBy(x => x.SequenceNumber).Select(x => new ColProp {
                        prop = x.prop, IsFrozen = x.IsFrozen
                    }).ToArray();
                }
                if (!HasFrozenColumns && HasNonFrozenColumnsOrdered)
                {
                    ushort k = 0;
                    foreach (var item in bvgGrid.bvgSettings.NonFrozenColumnsListOrdered.Values)
                    {
                        if (list1.Any(x => x.Name.Equals(item, StringComparison.InvariantCultureIgnoreCase)))
                        {
                            list1.Single(x => x.Name.Equals(item, StringComparison.InvariantCultureIgnoreCase)).SequenceNumber = k;
                            k++;
                        }
                    }
                    result = list1.OrderBy(x => x.SequenceNumber).Select(x => new ColProp {
                        prop = x.prop, IsFrozen = x.IsFrozen
                    }).ToArray();
                }
                if (HasFrozenColumns && HasNonFrozenColumnsOrdered)
                {
                    ushort k = 0;
                    foreach (var item in bvgGrid.bvgSettings.NonFrozenColumnsListOrdered.Values)
                    {
                        if (list1.Any(x => x.Name.Equals(item, StringComparison.InvariantCultureIgnoreCase)))
                        {
                            list1.Single(x => x.Name.Equals(item, StringComparison.InvariantCultureIgnoreCase)).SequenceNumber = k;
                            k++;
                        }
                    }

                    k = (ushort)(-bvgGrid.bvgSettings.FrozenColumnsListOrdered.Count());
                    foreach (var item in bvgGrid.bvgSettings.FrozenColumnsListOrdered.Values)
                    {
                        if (list1.Any(x => x.Name.Equals(item, StringComparison.InvariantCultureIgnoreCase)))
                        {
                            OrderItem i = list1.Single(x => x.Name.Equals(item, StringComparison.InvariantCultureIgnoreCase));
                            i.SequenceNumber = k;
                            i.IsFrozen       = true;
                            k++;
                        }
                    }

                    result = list1.OrderBy(x => x.SequenceNumber).Select(x => new ColProp {
                        prop = x.prop, IsFrozen = x.IsFrozen
                    }).ToArray();
                }
            }


            #region SetColWidths and seqNumber
            ushort seqN = 0;
            foreach (var item in result)
            {
                item.SequenceNumber = seqN++;
                if (bvgGrid.bvgSettings.ColumnWidthsDictionary.Values.Any(x => x.Item1.Equals(item.prop.Name, StringComparison.InvariantCultureIgnoreCase)))
                {
                    ushort colwidth = bvgGrid.bvgSettings.ColumnWidthsDictionary.Values.Single(x => x.Item1.Equals(item.prop.Name, StringComparison.InvariantCultureIgnoreCase)).Item2;

                    if (colwidth < bvgGrid.bvgSettings.ColWidthMin)
                    {
                        colwidth = bvgGrid.bvgSettings.ColWidthMin;
                    }

                    if (colwidth > bvgGrid.bvgSettings.ColWidthMax)
                    {
                        colwidth = bvgGrid.bvgSettings.ColWidthMax;
                    }

                    item.ColWidth = colwidth;
                }
                else
                {
                    item.ColWidth = bvgGrid.bvgSettings.ColWidthDefault;
                }
            }
            #endregion

            return(result);
        }
示例#15
0
        public static void SelectAndScrollIntoViewHorizontal(bool AlignLeftOrRight, string ColName, ushort RowIndexInSource, BvgGrid <TItem> _bvgGrid, double p = -1)
        {
            double p1 = p + 5;

            if (p == -1)
            {
                p1 = GetScrollPositionForColumn(ColName, AlignLeftOrRight, _bvgGrid);
            }

            _bvgGrid.HorizontalScroll.compBlazorScrollbar.SetScrollPosition(p1);

            _bvgGrid.ActiveCell = Tuple.Create(true, RowIndexInSource, ColName);

            _bvgGrid.HorizontalScroll.compBlazorScrollbar.SetScrollPosition(p1 - 5);
        }
示例#16
0
        public static void GetColumns(ColProp[] props, BvgGrid _bvgGrid, T[] list, bool UpdateUI)
        {
            int h = _bvgGrid.bvgSettings.HeaderHeight - _bvgGrid.bvgSettings.HeaderStyle.BorderWidth * 2;

            if (!_bvgGrid.Columns.Any())
            {
                _bvgGrid.Columns = new BvgColumn[props.Count()];
                for (ushort i = 0; i < props.Count(); i++)
                {
                    _bvgGrid.Columns[i] = getCol(i, props[i], h, _bvgGrid);
                }
            }
            else
            {
                _bvgGrid.Columns = new BvgColumn[props.Count()];
                string[] UpdatePkg = new string[props.Count() * 4];
                short    j         = -1;
                for (ushort i = 0; i < props.Count(); i++)
                {
                    _bvgGrid.Columns[i] = getCol(i, props[i], h, _bvgGrid);

                    UpdatePkg[++j] = i.ToString();
                    UpdatePkg[++j] = props[i].prop.Name;
                    UpdatePkg[++j] = _bvgGrid.Columns[i].ColWidthDiv.ToString();
                    UpdatePkg[++j] = _bvgGrid.Columns[i].ColWidthSpan.ToString();
                }


                if (_bvgGrid.SortState.Item1)
                {
                    if (_bvgGrid.Columns.Any(x => x.prop.Name.Equals(_bvgGrid.SortState.Item2.prop.Name)))
                    {
                        BvgColumn sortedCol2 = _bvgGrid.Columns.Single(x => x.prop.Name.Equals(_bvgGrid.SortState.Item2.prop.Name));
                        sortedCol2.IsSorted = true;
                        sortedCol2.IsAscendingOrDescending = _bvgGrid.SortState.Item2.IsAscendingOrDescending;
                    }
                }


                if (_bvgGrid.Rows.Any())
                {
                    foreach (BvgRow r in _bvgGrid.Rows)
                    {
                        foreach (BvgCell c in r.Cells)
                        {
                            if (c.bvgColumn.ID < props.Count())
                            {
                                c.bvgColumn = _bvgGrid.Columns[c.bvgColumn.ID];
                                c.HasCol    = true;
                            }
                            else
                            {
                                c.HasCol = false;
                            }
                        }
                    }
                }


                if (UpdateUI)
                {
                    BvgJsInterop.UpdateColContentsBatch(UpdatePkg);
                    RefreshRows(list, _bvgGrid, true);
                }
            }
        }
示例#17
0
        private void Reset(bool LoadColumnsFromSettings)
        {
            FirstLoad    = true;
            ActualRender = true;

            LastHorizontalSkip = -1;

            LastHorizontalScrollPosition = 0;


            if (bvgGrid != null)
            {
                bvgGridTransferableState = new BvgGridTransferableState <TItem>(bvgGrid);
            }
            else
            {
                bvgGridTransferableState = new BvgGridTransferableState <TItem>();
            }

            bvgGrid = new BvgGrid <TItem>
            {
                IsReady         = true,
                Name            = TableName,
                RowsTotalCount  = SourceList.Count(),
                bvgSettings     = bvgSettings,
                AllProps        = typeof(TItem).GetProperties(BindingFlags.Public | BindingFlags.Instance),
                HasMeasuredRect = bvgGridTransferableState.HasMeasuredRect,
                bvgSize         = bvgGridTransferableState.bvgSize,
            };

            bvgGrid.bvgModal.bvgGrid = bvgGrid;

            if (bvgGridTransferableState.ContaintState)
            {
                bvgGrid.cssHelper = bvgGridTransferableState.cssHelper;
            }

            if (bvgGridTransferableState.ContaintState && !LoadColumnsFromSettings)
            {
                bvgGrid.ColumnsOrderedList          = bvgGridTransferableState.ColumnsOrderedList;
                bvgGrid.ColumnsOrderedListFrozen    = bvgGridTransferableState.ColumnsOrderedListFrozen;
                bvgGrid.ColumnsOrderedListNonFrozen = bvgGridTransferableState.ColumnsOrderedListNonFrozen;
            }
            else
            {
                bvgGrid.ColumnsOrderedList = ColumnsHelper <TItem> .GetColumnsOrderedList(bvgGrid);

                bvgGrid.ColumnsOrderedListFrozen    = bvgGrid.ColumnsOrderedList.Where(x => x.IsFrozen).ToArray();
                bvgGrid.ColumnsOrderedListNonFrozen = bvgGrid.ColumnsOrderedList.Where(x => x.IsFrozen == false).ToArray();
            }


            bvgGrid.UpdateNonFrozenColwidthSumsByElement();

            if (bvgSettings.SortedColumn.Item1)
            {
                bvgGrid.SortState = Tuple.Create(bvgSettings.SortedColumn.Item1, bvgSettings.SortedColumn.Item2, bvgSettings.SortedColumn.Item3);


                if (bvgSettings.SortedColumn.Item3)
                {
                    SortedRowsList = GenericAdapter <TItem> .GetSortedRowsList(SourceList.AsQueryable(), bvgSettings.SortedColumn.Item2).ToArray();
                }
                else
                {
                    SortedRowsList = GenericAdapter <TItem> .GetSortedRowsList(SourceList.AsQueryable(), bvgSettings.SortedColumn.Item2 + " desc").ToArray();
                }
            }
            else
            {
                bvgGrid.SortState = Tuple.Create(false, string.Empty, false);

                SortedRowsList = SourceList.ToArray();
            }
        }