Example #1
0
        public static void HandleInsertCommand(BasePage page, RadGrid Grid, CodeTorch.Core.Grid GridConfig, string InsertCommandName, object source, GridCommandEventArgs e)
        {
            DataCommandService dataCommandDB = DataCommandService.GetInstance();
            PageDB             pageDB        = new PageDB();

            log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

            if (page.IsValid)
            {
                try
                {
                    List <ScreenDataCommandParameter> parameters = null;

                    log.Info("\r\n\r\nIn Insert Mode");
                    if (String.IsNullOrEmpty(InsertCommandName))
                    {
                        throw new ApplicationException("InsertCommand is invalid");
                    }
                    log.DebugFormat("InsertCommand:{0}", InsertCommandName);

                    parameters = pageDB.GetPopulatedCommandParameters(InsertCommandName, page);
                    dataCommandDB.ExecuteDataCommand(InsertCommandName, parameters);
                }
                catch (Exception ex)
                {
                    e.Canceled = true;
                    page.DisplayErrorAlert(ex);
                }
            }
        }
Example #2
0
        public static void HandleUpdateCommand(BasePage page, RadGrid Grid, CodeTorch.Core.Grid GridConfig, string UpdateCommandName, object source, GridCommandEventArgs e)
        {
            DataCommandService dataCommandDB = DataCommandService.GetInstance();
            PageDB             pageDB        = new PageDB();

            log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

            if (page.IsValid)
            {
                try
                {
                    List <ScreenDataCommandParameter> parameters = null;

                    log.Info("In Edit Mode");
                    if (String.IsNullOrEmpty(UpdateCommandName))
                    {
                        throw new ApplicationException("UpdateCommand is invalid");
                    }
                    log.DebugFormat("UpdateCommand:{0}", UpdateCommandName);

                    if (String.IsNullOrEmpty(GridConfig.DataKeyNames) || String.IsNullOrEmpty(GridConfig.DataKeyParameterNames))
                    {
                        throw new ApplicationException("Grid DataKeyNames or DataKeyParameterNames is not set in configuration");
                    }


                    parameters = pageDB.GetPopulatedCommandParameters(UpdateCommandName, page);

                    string[] dataKeyArray      = GridConfig.DataKeyNames.Split(',');
                    string[] dataKeyParamArray = GridConfig.DataKeyParameterNames.Split(',');

                    if ((dataKeyArray.Length > 0))
                    {
                        //map grid data keys to the screen data command parameters
                        for (int i = 0; i < dataKeyArray.Length; i++)
                        {
                            if (i < dataKeyParamArray.Length)
                            {
                                SetGridDataKeysScreenDataCommandParameter(parameters, dataKeyParamArray[i], Grid.MasterTableView.DataKeyValues[e.Item.ItemIndex][dataKeyParamArray[i].Replace("@", "")]);
                            }
                        }
                    }
                    else
                    {
                        throw new ApplicationException("Grid DataKeyNames is not set in configuration");
                    }

                    dataCommandDB.ExecuteDataCommand(UpdateCommandName, parameters);
                }
                catch (Exception ex)
                {
                    e.Canceled = true;
                    page.DisplayErrorAlert(ex);
                }
            }
        }
Example #3
0
        private static void SetupCsvExportSettings(RadGrid Grid, CodeTorch.Core.Grid GridConfig)
        {
            Grid.MasterTableView.CommandItemSettings.ShowExportToCsvButton = GridConfig.ShowExportToCsvButton;
            Grid.ExportSettings.Csv.ColumnDelimiter       = (Telerik.Web.UI.GridCsvDelimiter)Enum.Parse(typeof(Telerik.Web.UI.GridCsvDelimiter), GridConfig.CsvColumnDelimiter.ToString());
            Grid.ExportSettings.Csv.RowDelimiter          = (Telerik.Web.UI.GridCsvDelimiter)Enum.Parse(typeof(Telerik.Web.UI.GridCsvDelimiter), GridConfig.CsvRowDelimiter.ToString());
            Grid.ExportSettings.Csv.EncloseDataWithQuotes = GridConfig.CsvEncloseDataWithQuotes;

            if (!String.IsNullOrEmpty(GridConfig.CsvFileExtension))
            {
                Grid.ExportSettings.Csv.FileExtension = GridConfig.CsvFileExtension;
            }
        }
Example #4
0
        public static void HandleDeleteCommand(BasePage page, RadGrid Grid, CodeTorch.Core.Grid GridConfig, object source, GridCommandEventArgs e)
        {
            DataCommandService dataCommandDB = DataCommandService.GetInstance();
            PageDB             pageDB        = new PageDB();

            try
            {
                if (GridConfig.DeleteDataCommand != String.Empty)
                {
                    if (String.IsNullOrEmpty(GridConfig.DataKeyNames) || String.IsNullOrEmpty(GridConfig.DataKeyParameterNames))
                    {
                        throw new ApplicationException("Grid DataKeyNames or DataKeyParameterNames is not set in configuration");
                    }
                    else
                    {
                        List <ScreenDataCommandParameter> parameters = pageDB.GetPopulatedCommandParameters(GridConfig.DeleteDataCommand, page);
                        string[] dataKeyArray      = GridConfig.DataKeyNames.Split(',');
                        string[] dataKeyParamArray = GridConfig.DataKeyParameterNames.Split(',');

                        if ((dataKeyArray.Length > 0))
                        {
                            //map grid data keys to the screen data command parameters
                            for (int i = 0; i < dataKeyArray.Length; i++)
                            {
                                if (i < dataKeyParamArray.Length)
                                {
                                    SetGridDataKeysScreenDataCommandParameter(parameters, dataKeyParamArray[i],
                                                                              e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex][dataKeyArray[i]]
                                                                              );
                                }
                            }

                            dataCommandDB.ExecuteDataCommand(GridConfig.DeleteDataCommand, parameters);
                        }
                        else
                        {
                            throw new ApplicationException("Grid DataKeyNames is not set in configuration");
                        }
                    }
                }
                else
                {
                    throw new ApplicationException("DeleteCommand is invalid");
                }
            }
            catch (Exception ex)
            {
                page.DisplayErrorAlert(ex);

                Common.LogException(ex, false);
            }
        }
Example #5
0
        public static void SetupGridClientSettings(RadGrid Grid, CodeTorch.Core.Grid GridConfig)
        {
            if (!String.IsNullOrEmpty(GridConfig.DataKeyNames))
            {
                Grid.MasterTableView.ClientDataKeyNames = GridConfig.DataKeyNames.Split(',');
            }
            // Grid.MasterTableView.ClientDataKeyNames

            Grid.ClientSettings.AllowRowsDragDrop                = GridConfig.AllowRowsDragDrop;
            Grid.ClientSettings.Selecting.AllowRowSelect         = GridConfig.AllowRowSelect;
            Grid.ClientSettings.Selecting.EnableDragToSelectRows = GridConfig.EnableDragToSelectRows;

            Grid.ClientSettings.ClientEvents.OnRowDropping = GridConfig.OnRowDropping;
            Grid.ClientSettings.ClientEvents.OnRowDropped  = GridConfig.OnRowDropped;
        }
Example #6
0
        private static void SetupGridScrolling(RadGrid Grid, CodeTorch.Core.Grid GridConfig)
        {
            //scrolling
            Grid.ClientSettings.Scrolling.AllowScroll        = GridConfig.AllowScroll;
            Grid.ClientSettings.Scrolling.FrozenColumnsCount = GridConfig.FrozenColumnsCount;
            Grid.ClientSettings.Scrolling.SaveScrollPosition = GridConfig.SaveScrollPosition;
            Grid.ClientSettings.Scrolling.UseStaticHeaders   = GridConfig.UseStaticHeaders;

            if (!String.IsNullOrEmpty(GridConfig.ScrollBarWidth))
            {
                Grid.ClientSettings.Scrolling.ScrollBarWidth = new Unit(GridConfig.ScrollBarWidth);
            }

            if (!String.IsNullOrEmpty(GridConfig.ScrollHeight))
            {
                Grid.ClientSettings.Scrolling.ScrollHeight = new Unit(GridConfig.ScrollHeight);
            }
        }
Example #7
0
        public static GridEditCommandColumn GetEditColumn(RadGrid Grid, CodeTorch.Core.Grid GridConfig)
        {
            GridEditCommandColumn col = null;

            CodeTorch.Core.GridColumn editColumn = GridConfig.Columns.Where(c =>
                                                                            (
                                                                                (c is EditGridColumn)
                                                                            )
                                                                            )
                                                   .SingleOrDefault();

            if (editColumn != null)
            {
                int columnIndex = Enumerable.Range(0, GridConfig.Columns.Count).First(i => GridConfig.Columns[i] is EditGridColumn);
                col = (GridEditCommandColumn)Grid.MasterTableView.Columns[columnIndex];;
            }

            return(col);
        }
Example #8
0
        private static void HandleEditableGridDetailPopulation(BasePage page, CodeTorch.Core.Grid GridConfig, bool UseDefaultCommand, string DefaultCommandName, GridItemEventArgs e)
        {
            if (e.Item is GridEditFormItem && e.Item.IsInEditMode)
            {
                Control c = page.FindControlRecursive(e.Item, GridEditFormItem.EditFormUserControlID);
                if (c != null)
                {
                    GridDetail detail = ((GridDetail)c);



                    if (e.Item.OwnerTableView.IsItemInserted)
                    {
                        if (UseDefaultCommand)
                        {
                            if (!String.IsNullOrEmpty(DefaultCommandName))
                            {
                                DataCommandService dataCommandDB = DataCommandService.GetInstance();
                                PageDB             pageDB        = new PageDB();

                                List <ScreenDataCommandParameter> parameters = pageDB.GetPopulatedCommandParameters(DefaultCommandName, page);
                                DataTable data = dataCommandDB.GetDataForDataCommand(GridConfig.SelectDataCommand, parameters);
                                detail.Default(e.Item, data);
                            }
                        }
                    }
                    else
                    {
                        DataRowView data = ((DataRowView)detail.DataItem);
                        detail.Populate(e.Item);
                    }

                    detail.ExecuteAfterPopulateSections();
                }
            }
        }
Example #9
0
        public static void FillGrid(BasePage page, RadGrid Grid, CodeTorch.Core.Grid GridConfig)
        {
            log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            try
            {
                DataCommandService dataCommandDB = DataCommandService.GetInstance();
                PageDB             pageDB        = new PageDB();

                if (String.IsNullOrEmpty(GridConfig.SelectDataCommand))
                {
                    throw new ApplicationException("SelectDataCommand is not configured");
                }

                List <ScreenDataCommandParameter> parameters = pageDB.GetPopulatedCommandParameters(GridConfig.SelectDataCommand, page);

                Grid.DataSource = dataCommandDB.GetDataForDataCommand(GridConfig.SelectDataCommand, parameters);
            }
            catch (Exception ex)
            {
                page.DisplayErrorAlert(ex);

                log.Error(ex);
            }
        }
Example #10
0
        private static void HandleBinaryImageColumnsOnDataBound(RadGrid Grid, CodeTorch.Core.Grid GridConfig, GridItemEventArgs e)
        {
            if (e.Item is GridDataItem)
            {
                GridDataItem dataItem = (GridDataItem)e.Item;

                int gridColumnIndex = 0;
                foreach (CodeTorch.Core.GridColumn column in GridConfig.Columns)
                {
                    if (column is BinaryImageGridColumn)
                    {
                        TableCell             cell = null;
                        RadBinaryImage        img  = null;
                        BinaryImageGridColumn c    = ((BinaryImageGridColumn)column);

                        if (!String.IsNullOrEmpty(column.UniqueName))
                        {
                            cell = dataItem[column.UniqueName];
                            img  = (RadBinaryImage)cell.Controls[0];
                        }
                        else
                        {
                            cell = dataItem[Grid.Columns[gridColumnIndex]];
                            img  = (RadBinaryImage)cell.Controls[0];
                        }

                        if (img != null)
                        {
                            if (!String.IsNullOrEmpty(c.DataNavigateUrlFields) || !String.IsNullOrEmpty(c.DataNavigateUrlFormatString))
                            {
                                HyperLink link    = new HyperLink();
                                string    linkUrl = String.Empty;

                                string urlFormatString = Common.CreateUrlWithQueryStringContext(c.DataNavigateUrlFormatString, c.Context);
                                if (!String.IsNullOrEmpty(c.DataNavigateUrlFields))
                                {
                                    object[] fields      = c.DataNavigateUrlFields.Split(',');
                                    object[] fieldValues = new object[fields.Length];

                                    for (int i = 0; i < fields.Length; i++)
                                    {
                                        string fieldName = fields[i].ToString();
                                        object value     = ((DataRowView)e.Item.DataItem)[fieldName];
                                        fieldValues[i] = value;
                                    }

                                    linkUrl = String.Format(urlFormatString, fieldValues);
                                }

                                link.NavigateUrl = linkUrl;

                                link.Target = Common.CoalesceStr(link.Target, c.Target);

                                cell.Controls.Remove(img);
                                link.Controls.Add(img);
                                cell.Controls.AddAt(0, link);
                            }

                            if (((DataRowView)e.Item.DataItem)[c.DataField] is DBNull)
                            {
                                string imageUrl = c.DefaultImageUrl;
                                if (!String.IsNullOrEmpty(c.DefaultImageUrlField))
                                {
                                    if (String.IsNullOrEmpty(c.DefaultImageUrlFieldFormat))
                                    {
                                        imageUrl = ((DataRowView)e.Item.DataItem)[c.DefaultImageUrlField].ToString();
                                        if (!imageUrl.ToLower().Contains("//"))
                                        {
                                            imageUrl = "//" + imageUrl;
                                        }
                                    }
                                    else
                                    {
                                        imageUrl = String.Format(c.DefaultImageUrlFieldFormat, ((DataRowView)e.Item.DataItem)[c.DataAlternateTextField]);
                                    }
                                }

                                if (!String.IsNullOrEmpty(imageUrl))
                                {
                                    img.ImageUrl = imageUrl;
                                }
                            }
                        }
                    }

                    gridColumnIndex++;
                }
            }
        }
Example #11
0
        public static void HandleEditableGridItemDataBound(BasePage page, RadGrid Grid, CodeTorch.Core.Grid GridConfig, bool UseDefaultCommand, string DefaultCommandName, object sender, GridItemEventArgs e)
        {
            HandleBinaryImageColumnsOnDataBound(Grid, GridConfig, e);


            HandleEditableGridDetailPopulation(page, GridConfig, UseDefaultCommand, DefaultCommandName, e);
        }
Example #12
0
 public static void HandleItemDataBound(BasePage page, RadGrid Grid, CodeTorch.Core.Grid GridConfig, object sender, GridItemEventArgs e)
 {
     HandleBinaryImageColumnsOnDataBound(Grid, GridConfig, e);
 }
Example #13
0
        public static void HandleEditableGridItemCreated(BasePage page, RadGrid Grid, CodeTorch.Core.Grid GridConfig, List <Section> Sections, string SectionZoneLayout, bool DisplayAddButton, object source, GridItemEventArgs e)
        {
            if (e.Item is GridCommandItem)
            {
                if (!DisplayAddButton)
                {
                    GridFunctions.HideAddCommandItem(Grid);
                }
            }

            if (e.Item is GridEditFormItem && e.Item.IsInEditMode)
            {
                Control c = page.FindControlRecursive(e.Item, GridEditFormItem.EditFormUserControlID);
                if (c != null)
                {
                    GridDetail detail = ((GridDetail)c);

                    detail.Sections          = Sections;
                    detail.SectionZoneLayout = SectionZoneLayout;

                    if (e.Item.OwnerTableView.IsItemInserted)
                    {
                        detail.Mode = SectionMode.Insert;
                        detail.Render();

                        detail.SetSaveButtonToInsertMode();
                        detail.SettingSectionTitle("Add");
                    }
                    else
                    {
                        detail.Mode = SectionMode.Edit;

                        detail.Render();


                        detail.SetSaveButtonToUpdateMode();
                        detail.SettingSectionTitle("Edit");
                    }
                }
            }
        }
Example #14
0
        public static void HandleItemCommand(RadGrid Grid, CodeTorch.Core.Grid GridConfig, object source, GridCommandEventArgs e)
        {
            //HANDLE EDIT GRIDS
            if (e.CommandName == RadGrid.InitInsertCommandName) //"Add new" button clicked
            {
                GridEditCommandColumn editColumn = GetEditColumn(Grid, GridConfig);
                if (editColumn != null)
                {
                    editColumn.Visible = false;
                }
            }
            else if (e.CommandName == RadGrid.RebindGridCommandName && e.Item.OwnerTableView.IsItemInserted)
            {
                //dont't allow refreshing of grid while in add mode
                e.Canceled = true;
            }
            else
            {
                GridEditCommandColumn editColumn = GetEditColumn(Grid, GridConfig);
                if (editColumn != null)
                {
                    if (!editColumn.Visible)
                    {
                        editColumn.Visible = true;
                    }
                }
            }

            //HANDLE EXPORTS
            if (
                (e.CommandName == RadGrid.ExportToCsvCommandName) ||
                (e.CommandName == RadGrid.ExportToExcelCommandName) ||
                (e.CommandName == RadGrid.ExportToPdfCommandName) ||
                (e.CommandName == RadGrid.ExportToWordCommandName)
                )
            {
                int gridColumnIndex = 0;
                foreach (CodeTorch.Core.GridColumn column in GridConfig.Columns)
                {
                    bool isColumnVisible = true;

                    if (column.VisiblePermission.CheckPermission)
                    {
                        isColumnVisible = Common.HasPermission(column.VisiblePermission.Name);
                    }

                    if (isColumnVisible)
                    {
                        bool includeInExport = column.IncludeInExport;

                        if (includeInExport)
                        {
                            if (column.ExportPermission.CheckPermission)
                            {
                                includeInExport = Common.HasPermission(column.ExportPermission.Name);
                            }
                        }

                        if (!includeInExport)
                        {
                            Grid.Columns[gridColumnIndex].Visible = false;
                        }
                        else
                        {
                            if (!String.IsNullOrEmpty(column.ExportDataField))
                            {
                                switch (column.ColumnType)
                                {
                                case GridColumnType.BoundGridColumn:
                                    GridBoundColumn boundcol = ((GridBoundColumn)Grid.Columns[gridColumnIndex]);
                                    boundcol.DataField = column.ExportDataField;
                                    break;

                                case GridColumnType.HyperLinkGridColumn:
                                    GridHyperLinkColumn hypercol = ((GridHyperLinkColumn)Grid.Columns[gridColumnIndex]);
                                    hypercol.DataTextField = column.ExportDataField;
                                    break;
                                }
                            }
                        }

                        gridColumnIndex++;
                    }
                }
            }
        }
Example #15
0
        private static void SetupGridGrouping(RadGrid Grid, CodeTorch.Core.Grid GridConfig)
        {
            if (GridConfig != null)
            {
                Grid.GroupingEnabled = GridConfig.GroupingEnabled;

                if (Grid.GroupingEnabled)
                {
                    Grid.MasterTableView.GroupLoadMode = (Telerik.Web.UI.GridGroupLoadMode)Enum.Parse(typeof(Telerik.Web.UI.GridGroupLoadMode), GridConfig.GroupLoadMode.ToString());
                    if (Grid.MasterTableView.GroupLoadMode == Telerik.Web.UI.GridGroupLoadMode.Client)
                    {
                        Grid.ClientSettings.AllowGroupExpandCollapse = true;
                    }
                    else
                    {
                        Grid.ClientSettings.AllowGroupExpandCollapse = GridConfig.AllowGroupExpandCollapse;
                    }

                    Grid.MasterTableView.GroupsDefaultExpanded = GridConfig.GroupsDefaultExpanded;
                    Grid.ShowGroupPanel = GridConfig.ShowGroupPanel;
                    Grid.ClientSettings.AllowGroupExpandCollapse = GridConfig.AllowGroupExpandCollapse;



                    foreach (CodeTorch.Core.GridGroupByExpression expression in GridConfig.GroupByExpressions)
                    {
                        Telerik.Web.UI.GridGroupByExpression e = new Telerik.Web.UI.GridGroupByExpression();

                        foreach (CodeTorch.Core.GridGroupByField field in expression.Fields)
                        {
                            Telerik.Web.UI.GridGroupByField gridGroupByField = new Telerik.Web.UI.GridGroupByField();

                            if (field is GridGroupBySelectField)
                            {
                                GridGroupBySelectField selectfield = (GridGroupBySelectField)field;
                                gridGroupByField.FieldName = selectfield.FieldName;

                                if (!String.IsNullOrEmpty(selectfield.FieldAlias))
                                {
                                    gridGroupByField.FieldAlias = selectfield.FieldAlias;
                                }
                                gridGroupByField.Aggregate            = (Telerik.Web.UI.GridAggregateFunction)Enum.Parse(typeof(Telerik.Web.UI.GridAggregateFunction), selectfield.Aggregate.ToString());
                                gridGroupByField.HeaderText           = selectfield.HeaderText;
                                gridGroupByField.HeaderValueSeparator = selectfield.HeaderValueSeparator;
                                gridGroupByField.FormatString         = selectfield.FormatString;


                                e.SelectFields.Add(gridGroupByField);
                            }

                            if (field is GridGroupByGroupField)
                            {
                                GridGroupByGroupField groupfield = (GridGroupByGroupField)field;
                                gridGroupByField.FieldName = groupfield.FieldName;
                                gridGroupByField.SortOrder = (Telerik.Web.UI.GridSortOrder)Enum.Parse(typeof(Telerik.Web.UI.GridSortOrder), groupfield.SortOrder.ToString());

                                e.GroupByFields.Add(gridGroupByField);
                            }
                        }

                        Grid.MasterTableView.GroupByExpressions.Add(e);
                    }
                }
            }
        }
Example #16
0
        public static void BuildEditableGrid(BasePage page, RadGrid Grid, CodeTorch.Core.Grid GridConfig, ScreenActionLink AddLink, string ResourceKeyPrefix)
        {
            if (GridConfig != null)
            {
                if (!String.IsNullOrEmpty(GridConfig.CssClass))
                {
                    Grid.CssClass = GridConfig.CssClass;
                }

                if (!String.IsNullOrEmpty(GridConfig.SkinID))
                {
                    Grid.SkinID = GridConfig.SkinID;
                }

                if (!String.IsNullOrEmpty(GridConfig.Skin))
                {
                    Grid.Skin = GridConfig.Skin;
                }

                Grid.MasterTableView.CommandItemDisplay = GridCommandItemDisplay.Top;
                Grid.MasterTableView.CommandItemSettings.AddNewRecordText = AddLink.Text;


                Grid.MasterTableView.CommandItemSettings.ShowRefreshButton = GridConfig.ShowRefreshButton;
                SetupCsvExportSettings(Grid, GridConfig);
                Grid.MasterTableView.CommandItemSettings.ShowExportToExcelButton = GridConfig.ShowExportToExcelButton;
                Grid.MasterTableView.CommandItemSettings.ShowExportToPdfButton   = GridConfig.ShowExportToPdfButton;
                Grid.MasterTableView.CommandItemSettings.ShowExportToWordButton  = GridConfig.ShowExportToWordButton;



                Grid.ExportSettings.OpenInNewWindow      = GridConfig.ExportOpenInNewWindow;
                Grid.ExportSettings.IgnorePaging         = GridConfig.ExportIgnorePaging;
                Grid.ExportSettings.HideStructureColumns = GridConfig.ExportHideStructureColumns;
                if (!String.IsNullOrEmpty(GridConfig.ExportFileName))
                {
                    Grid.ExportSettings.FileName = GridConfig.ExportFileName;
                }
                else
                {
                    if (!String.IsNullOrEmpty(GridConfig.Name))
                    {
                        Grid.ExportSettings.FileName = GridConfig.Name;
                    }
                }

                Grid.MasterTableView.EnableColumnsViewState = false;

                Grid.MasterTableView.EditMode = GridEditMode.EditForms;
                Grid.MasterTableView.EditFormSettings.EditFormType    = GridEditFormType.WebUserControl;
                Grid.MasterTableView.EditFormSettings.UserControlName = "~/templates/sections/griddetail.ascx";

                //SectionHeaderLabel.Text = GetGlobalResourceString(page, GridConfig, ResourceKeyPrefix, "Name", GridConfig.Name);
                //SectionHelpTextLabel.Text = GetGlobalResourceString(page, GridConfig, ResourceKeyPrefix, "HelpText", GridConfig.HelpText);
                Grid.AllowSorting = GridConfig.AllowSorting;
                Grid.AllowPaging  = GridConfig.AllowPaging;

                if (!String.IsNullOrEmpty(GridConfig.DataKeyNames))
                {
                    Grid.MasterTableView.DataKeyNames = GridConfig.DataKeyNames.Split(',');
                }

                if (Grid.AllowPaging)
                {
                    Grid.PageSize = GridConfig.PageSize;
                }

                SetupGridScrolling(Grid, GridConfig);

                foreach (CodeTorch.Core.GridColumn column in GridConfig.Columns)
                {
                    bool isColumnVisible = true;

                    if (column.VisiblePermission.CheckPermission)
                    {
                        isColumnVisible = Common.HasPermission(column.VisiblePermission.Name);
                    }

                    if (isColumnVisible)
                    {
                        GridFunctions.BuildGridColumn(page, Grid, GridConfig, column, ResourceKeyPrefix + ".Columns");
                    }
                }

                SetupGridGrouping(Grid, GridConfig);
                SetupGridClientSettings(Grid, GridConfig);
            }
        }