コード例 #1
0
ファイル: Utilities.cs プロジェクト: norio-soft/proteo
        public static void SaveGridSettings(Telerik.Web.UI.RadGrid gridInstance, eGrid grid, string userName)
        {
            var masterTable        = gridInstance.MasterTableView;
            var groupByExpressions = masterTable.GroupByExpressions.Cast <GridGroupByExpression>();
            var allColumns         = masterTable.Columns.Cast <GridColumn>().Concat(masterTable.AutoGeneratedColumns);

            var losFormatter = new LosFormatter();

            var serializeViewState = new Func <IStateManager, string>(sm =>
            {
                using (var writer = new StringWriter())
                {
                    losFormatter.Serialize(writer, sm.SaveViewState());
                    return(writer.ToString());
                }
            });

            var gridState = new GridState
            {
                GroupByExpressionViewStates = groupByExpressions.Select(gbe => serializeViewState(gbe)),
                SortExpressionsViewState    = serializeViewState(masterTable.SortExpressions),
                FilterExpression            = masterTable.FilterExpression,
                ColumnStates = allColumns.ToDictionary(
                    c => c.UniqueName,
                    c => new GridColumnState {
                    Visible = c.Visible, Width = c.HeaderStyle.Width, OrderIndex = c.OrderIndex
                }),
            };

            Orchestrator.DataAccess.SystemSettings.SaveGridSettings(userName, (int)grid, gridState.Serialize(), null);
        }
コード例 #2
0
ファイル: Utilities.cs プロジェクト: norio-soft/proteo
        public static void LoadSettings(Telerik.Web.UI.RadGrid gridInstance, eGrid grid, out IEnumerable <string> columnsToHide, string userName)
        {
            var settingsRow = DataAccess.SystemSettings.GetGridSettings(userName, (int)grid).Tables[0].AsEnumerable().FirstOrDefault();

            var settings = string.Empty;

            columnsToHide = Enumerable.Empty <string>();

            if (settingsRow != null)
            {
                if (!settingsRow.IsNull("DATA"))
                {
                    settings = settingsRow.Field <string>("DATA");
                }

                if (!settingsRow.IsNull("ColumnsToHide"))
                {
                    columnsToHide = settingsRow.Field <string>("ColumnsToHide").Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                }
            }

            var masterTable = gridInstance.MasterTableView;
            var allColumns  = masterTable.Columns.Cast <GridColumn>().Concat(masterTable.AutoGeneratedColumns);

            if (!string.IsNullOrWhiteSpace(settings) || columnsToHide.Any())
            {
                var gridState = GridState.Deserialize(settings);

                #region Old Load Method

                // The following 5 lines are only in place to allow people to upgrade from any older version of HE to the latest version without losing their saved grid settings.
                // For any future release of HE these saved settings will have been migrated to the new format so these lines can be removed.
                if (gridState == null)
                {
                    LoadSettings_OldMethod(gridInstance, settings, columnsToHide);
                    SaveGridSettings(gridInstance, grid, userName);
                    return;
                }

                #endregion Old Load Method

                var losFormatter = new LosFormatter();

                var deserializeViewState = new Action <string, IStateManager>((s, sm) =>
                {
                    using (var reader = new StringReader(s))
                    {
                        try
                        {
                            var viewState = losFormatter.Deserialize(reader);
                            sm.LoadViewState(viewState);
                        }
                        catch
                        {
                            // Don't throw an exception if the grid data can't be deserialised... sometimes this can happen if the Telerik controls have been updated to a more recent version.
                        }
                    }
                });

                // Load group by expressions
                var groupByExpressions = masterTable.GroupByExpressions;
                groupByExpressions.Clear();

                foreach (var vs in gridState.GroupByExpressionViewStates)
                {
                    var expression = new GridGroupByExpression();
                    deserializeViewState(vs, expression);
                    groupByExpressions.Add(expression);
                }

                // Load sort expressions
                var sortExpressions = masterTable.SortExpressions;
                sortExpressions.Clear();
                deserializeViewState(gridState.SortExpressionsViewState, sortExpressions);

                // Load filter expression
                masterTable.FilterExpression = gridState.FilterExpression;

                foreach (var column in allColumns)
                {
                    if (gridState.ColumnStates.ContainsKey(column.UniqueName))
                    {
                        var columnState = gridState.ColumnStates[column.UniqueName];
                        column.OrderIndex      = columnState.OrderIndex;
                        column.ItemStyle.Width = column.HeaderStyle.Width = columnState.Width;
                        column.Visible         = columnState.Visible;
                    }
                }
            }

            columnsToHide = from c in allColumns where !c.Visible select c.UniqueName;
        }
コード例 #3
0
ファイル: Utilities.cs プロジェクト: norio-soft/proteo
        public static void LoadSettings(Telerik.Web.UI.RadGrid gridInstance, eGrid grid, string userName)
        {
            IEnumerable <string> columnsToHide;

            LoadSettings(gridInstance, grid, out columnsToHide, userName);
        }
コード例 #4
0
ファイル: Utilities.cs プロジェクト: norio-soft/proteo
 public static void ResetGridSettings(eGrid grid, string userName)
 {
     Orchestrator.DataAccess.SystemSettings.SaveGridSettings(userName, (int)grid, string.Empty, string.Empty);
 }