Esempio n. 1
0
        private static JqGridColumnModel CreateJqGridColumnModel(ModelMetadata columnMetadata)
        {
            JqGridColumnModel columnModel = new JqGridColumnModel(columnMetadata.PropertyName);

            TimestampAttribute             timeStampAttribute             = null;
            JqGridColumnLayoutAttribute    jqGridColumnLayoutAttribute    = null;
            JqGridColumnSortableAttribute  jqGridColumnSortableAttribute  = null;
            JqGridColumnFormatterAttribute jqGridColumnFormatterAttribute = null;
            JqGridColumnSummaryAttribute   jqGridColumnSummaryAttribute   = null;

            foreach (Attribute customAttribute in columnMetadata.ContainerType.GetProperty(columnMetadata.PropertyName).GetCustomAttributes(true))
            {
                timeStampAttribute             = (customAttribute as TimestampAttribute) ?? timeStampAttribute;
                jqGridColumnLayoutAttribute    = (customAttribute as JqGridColumnLayoutAttribute) ?? jqGridColumnLayoutAttribute;
                jqGridColumnSortableAttribute  = (customAttribute as JqGridColumnSortableAttribute) ?? jqGridColumnSortableAttribute;
                jqGridColumnFormatterAttribute = (customAttribute as JqGridColumnFormatterAttribute) ?? jqGridColumnFormatterAttribute;
                jqGridColumnSummaryAttribute   = (customAttribute as JqGridColumnSummaryAttribute) ?? jqGridColumnSummaryAttribute;
            }

            if (timeStampAttribute != null)
            {
            }
            else
            {
                columnModel = SetLayoutOptions(columnModel, jqGridColumnLayoutAttribute);
                columnModel = SetSortOptions(columnModel, jqGridColumnSortableAttribute);
                columnModel = SetFormatterOptions(columnModel, jqGridColumnFormatterAttribute);
                columnModel = SetSummaryOptions(columnModel, jqGridColumnSummaryAttribute);
            }

            return(columnModel);
        }
Esempio n. 2
0
        public RequestExplorerModel Execute(RequestExplorerRequestModel request)
        {
            var report = _reportBuilder.Build();

            // TODO -- move to types? Need to support no data in here
            var columnModel    = new JqGridColumnModel();
            var behaviorReport = report.Requests.FirstOrDefault();

            if (behaviorReport != null)
            {
                _columnBuilders
                .SelectMany(builder => builder.ColumnsFor(behaviorReport))
                .Each(col => columnModel.AddColumn(new JqGridColumn
                {
                    hidden     = col.IsHidden,
                    hidedlg    = col.IsHidden,
                    hideFilter = col.HideFilter,
                    name       = col.Name,
                    index      = col.Name
                }));
            }
            return(new RequestExplorerModel {
                ColumnModel = columnModel
            });
        }
Esempio n. 3
0
        public RoutesModel Get(RouteRequestModel request)
        {
            var columnModel = new JqGridColumnModel();
            var chain       = _graph.Behaviors.First();

            _columnBuilders
            .SelectMany(builder => builder.ColumnsFor(chain))
            .Each(col => columnModel.AddColumn(new JqGridColumn
            {
                hidden     = col.IsHidden,
                hidedlg    = col.IsHidden,
                hideFilter = col.HideFilter,
                name       = col.Name,
                index      = col.Name
            }));

            var model = new RoutesModel {
                ColumnModel = columnModel
            };

            if (request.Column.IsNotEmpty() && request.Value.IsNotEmpty())
            {
                model.Filter = new JsonGridFilter {
                    ColumnName = request.Column, Values = new List <string> {
                        request.Value
                    }
                };
            }

            return(model);
        }
        private static JqGridColumnModel SetFormatterOptions(JqGridColumnModel columnModel, JqGridColumnFormatterAttribute jqGridColumnFormatterAttribute)
        {
            if (jqGridColumnFormatterAttribute != null)
            {
                columnModel.Formatter        = jqGridColumnFormatterAttribute.Formatter;
                columnModel.FormatterOptions = jqGridColumnFormatterAttribute.FormatterOptions;
                columnModel.UnFormatter      = jqGridColumnFormatterAttribute.UnFormatter;
            }

            return(columnModel);
        }
        private static JqGridColumnModel SetSummaryOptions(JqGridColumnModel columnModel, JqGridColumnSummaryAttribute jqGridColumnSummaryAttribute)
        {
            if (jqGridColumnSummaryAttribute != null)
            {
                columnModel.SummaryType     = jqGridColumnSummaryAttribute.Type;
                columnModel.SummaryTemplate = jqGridColumnSummaryAttribute.Template;
                columnModel.SummaryFunction = jqGridColumnSummaryAttribute.Function;
            }

            return(columnModel);
        }
        private static JqGridColumnModel SetMappingOptions(JqGridColumnModel columnModel, JqGridColumnMappingAttribute jqGridColumnMappingAttribute)
        {
            if (jqGridColumnMappingAttribute != null)
            {
                columnModel.JsonMapping = jqGridColumnMappingAttribute.JsonMapping;
                columnModel.Key         = jqGridColumnMappingAttribute.Key;
                columnModel.XmlMapping  = jqGridColumnMappingAttribute.XmlMapping;
            }

            return(columnModel);
        }
        private static JqGridColumnModel SetSearchOptions(JqGridColumnModel columnModel, IUrlHelper urlHelper, Type modelType, JqGridColumnSearchableAttribute jqGridColumnSearchableAttribute, RangeAttribute rangeAttribute)
        {
            if (jqGridColumnSearchableAttribute != null)
            {
                columnModel.Searchable    = jqGridColumnSearchableAttribute.Searchable;
                columnModel.SearchOptions = GetElementOptions(jqGridColumnSearchableAttribute.SearchOptions, urlHelper, jqGridColumnSearchableAttribute);
                columnModel.SearchRules   = GetRules(modelType, jqGridColumnSearchableAttribute, rangeAttribute, null);
                columnModel.SearchType    = jqGridColumnSearchableAttribute.SearchType;
            }

            return(columnModel);
        }
        private static JqGridColumnModel SetSortOptions(JqGridColumnModel columnModel, JqGridColumnSortableAttribute jqGridColumnSortableAttribute)
        {
            if (jqGridColumnSortableAttribute != null)
            {
                columnModel.Index = jqGridColumnSortableAttribute.Index;
                columnModel.InitialSortingOrder = jqGridColumnSortableAttribute.InitialSortingOrder;
                columnModel.Sortable            = jqGridColumnSortableAttribute.Sortable;
                columnModel.SortType            = jqGridColumnSortableAttribute.SortType;
                columnModel.SortFunction        = jqGridColumnSortableAttribute.SortFunction;
            }

            return(columnModel);
        }
        private static JqGridColumnModel SetEditOptions(JqGridColumnModel columnModel, IUrlHelper urlHelper, Type modelType, JqGridColumnEditableAttribute jqGridColumnEditableAttribute, RangeAttribute rangeAttribute, RequiredAttribute requiredAttribute)
        {
            if (jqGridColumnEditableAttribute != null)
            {
                columnModel.DateFormat           = jqGridColumnEditableAttribute.DateFormat;
                columnModel.Editable             = jqGridColumnEditableAttribute.Editable;
                columnModel.EditOptions          = GetElementOptions(jqGridColumnEditableAttribute.EditOptions, urlHelper, jqGridColumnEditableAttribute);
                columnModel.EditOptions.PostData = jqGridColumnEditableAttribute.PostData;
                columnModel.EditRules            = GetRules(modelType, jqGridColumnEditableAttribute, rangeAttribute, requiredAttribute);
                columnModel.EditType             = jqGridColumnEditableAttribute.EditType;
                columnModel.FormOptions          = jqGridColumnEditableAttribute.FormOptions;
            }

            return(columnModel);
        }
Esempio n. 10
0
        /// <summary>
        /// Adds column to options.
        /// </summary>
        /// <param name="columnName">The column name.</param>
        /// <param name="columnModel">The column model.</param>
        /// <exception cref="System.ArgumentNullException">
        /// The column name or model haven't been provided.
        /// </exception>
        public void AddColumn(string columnName, JqGridColumnModel columnModel)
        {
            if (String.IsNullOrWhiteSpace(columnName))
            {
                throw new ArgumentNullException(nameof(columnName));
            }

            if (columnModel == null)
            {
                throw new ArgumentNullException(nameof(columnModel));
            }

            _columnsModels.Add(columnModel);
            _columnsNames.Add(columnName);
        }
Esempio n. 11
0
        /// <summary>
        /// Inserts column to options.
        /// </summary>
        /// <param name="position">The column position.</param>
        /// <param name="columnName">The column name.</param>
        /// <param name="columnModel">The column model.</param>
        /// <exception cref="System.ArgumentNullException">
        /// The column name or model haven't been provided.
        /// </exception>
        public void InsertColumn(int position, string columnName, JqGridColumnModel columnModel)
        {
            if (String.IsNullOrWhiteSpace(columnName))
            {
                throw new ArgumentNullException(nameof(columnName));
            }

            if (columnModel == null)
            {
                throw new ArgumentNullException(nameof(columnModel));
            }

            _columnsModels.Insert(position, columnModel);
            _columnsNames.Insert(position, columnName);
        }
        private static JqGridColumnModel CreateJqGridColumnModel(ModelMetadata columnMetadata, IUrlHelper urlHelper)
        {
            JqGridColumnModel columnModel = new JqGridColumnModel(columnMetadata.PropertyName);

            TimestampAttribute              timeStampAttribute              = null;
            RangeAttribute                  rangeAttribute                  = null;
            RequiredAttribute               requiredAttribute               = null;
            JqGridColumnLayoutAttribute     jqGridColumnLayoutAttribute     = null;
            JqGridColumnSortableAttribute   jqGridColumnSortableAttribute   = null;
            JqGridColumnFormatterAttribute  jqGridColumnFormatterAttribute  = null;
            JqGridColumnSearchableAttribute jqGridColumnSearchableAttribute = null;
            JqGridColumnEditableAttribute   jqGridColumnEditableAttribute   = null;
            JqGridColumnSummaryAttribute    jqGridColumnSummaryAttribute    = null;
            JqGridColumnMappingAttribute    jqGridColumnMappingAttribute    = null;

            foreach (Attribute customAttribute in columnMetadata.ContainerType.GetProperty(columnMetadata.PropertyName).GetCustomAttributes(true))
            {
                timeStampAttribute              = (customAttribute as TimestampAttribute) ?? timeStampAttribute;
                rangeAttribute                  = (customAttribute as RangeAttribute) ?? rangeAttribute;
                requiredAttribute               = (customAttribute as RequiredAttribute) ?? requiredAttribute;
                jqGridColumnLayoutAttribute     = (customAttribute as JqGridColumnLayoutAttribute) ?? jqGridColumnLayoutAttribute;
                jqGridColumnSortableAttribute   = (customAttribute as JqGridColumnSortableAttribute) ?? jqGridColumnSortableAttribute;
                jqGridColumnFormatterAttribute  = (customAttribute as JqGridColumnFormatterAttribute) ?? jqGridColumnFormatterAttribute;
                jqGridColumnSearchableAttribute = (customAttribute as JqGridColumnSearchableAttribute) ?? jqGridColumnSearchableAttribute;
                jqGridColumnEditableAttribute   = (customAttribute as JqGridColumnEditableAttribute) ?? jqGridColumnEditableAttribute;
                jqGridColumnSummaryAttribute    = (customAttribute as JqGridColumnSummaryAttribute) ?? jqGridColumnSummaryAttribute;
                jqGridColumnMappingAttribute    = (customAttribute as JqGridColumnMappingAttribute) ?? jqGridColumnMappingAttribute;
            }

            if (timeStampAttribute != null)
            {
                columnModel.Editable = true;
                columnModel.Hidden   = true;
            }
            else
            {
                columnModel = SetLayoutOptions(columnModel, jqGridColumnLayoutAttribute);
                columnModel = SetSortOptions(columnModel, jqGridColumnSortableAttribute);
                columnModel = SetFormatterOptions(columnModel, jqGridColumnFormatterAttribute);
                columnModel = SetSearchOptions(columnModel, urlHelper, columnMetadata.ModelType, jqGridColumnSearchableAttribute, rangeAttribute);
                columnModel = SetEditOptions(columnModel, urlHelper, columnMetadata.ModelType, jqGridColumnEditableAttribute, rangeAttribute, requiredAttribute);
                columnModel = SetDatePickerDateFormatFromFormatter(columnModel, jqGridColumnFormatterAttribute);
                columnModel = SetSummaryOptions(columnModel, jqGridColumnSummaryAttribute);
                columnModel = SetMappingOptions(columnModel, jqGridColumnMappingAttribute);
            }

            return(columnModel);
        }
        private static JqGridColumnModel SetLayoutOptions(JqGridColumnModel columnModel, JqGridColumnLayoutAttribute jqGridColumnLayoutAttribute)
        {
            if (jqGridColumnLayoutAttribute != null)
            {
                columnModel.Alignment      = jqGridColumnLayoutAttribute.Alignment;
                columnModel.CellAttributes = jqGridColumnLayoutAttribute.CellAttributes;
                columnModel.Classes        = jqGridColumnLayoutAttribute.Classes;
                columnModel.Fixed          = jqGridColumnLayoutAttribute.Fixed;
                columnModel.Frozen         = jqGridColumnLayoutAttribute.Frozen;
                columnModel.HideInDialog   = jqGridColumnLayoutAttribute.HideInDialog;
                columnModel.Resizable      = jqGridColumnLayoutAttribute.Resizable;
                columnModel.Title          = jqGridColumnLayoutAttribute.Title;
                columnModel.Width          = jqGridColumnLayoutAttribute.Width;
                columnModel.Viewable       = jqGridColumnLayoutAttribute.Viewable;
            }

            return(columnModel);
        }
Esempio n. 14
0
        public RoutesModel Build()
        {
            var columnModel = new JqGridColumnModel();
            var chain       = _graph.Behaviors.First();

            _columnBuilders
            .SelectMany(builder => builder.ColumnsFor(chain))
            .Each(col => columnModel.AddColumn(new JqGridColumn
            {
                hidden     = col.IsHidden,
                hidedlg    = col.IsHidden,
                hideFilter = col.HideFilter,
                name       = col.Name,
                index      = col.Name
            }));

            return(new RoutesModel
            {
                ColumnModel = columnModel
            });
        }
        private static JqGridColumnModel SetDatePickerDateFormatFromFormatter(JqGridColumnModel columnModel, JqGridColumnFormatterAttribute jqGridColumnFormatterAttribute)
        {
            bool setSearchOptionsDatePickerDateFormat = columnModel.Searchable && (columnModel.SearchType == JqGridColumnSearchTypes.JQueryUIDatepicker) && (columnModel.SearchOptions.DatePickerDateFormat == JqGridOptionsDefaults.ColumnModel.JQueryUIWidgets.DatepickerDateFormat);
            bool setEditOptionsDatePickerDateFormat   = false;

            if (setSearchOptionsDatePickerDateFormat || setEditOptionsDatePickerDateFormat)
            {
                if ((jqGridColumnFormatterAttribute != null) && (jqGridColumnFormatterAttribute.Formatter == JqGridPredefinedFormatters.Date) && (jqGridColumnFormatterAttribute.OutputFormat != JqGridOptionsDefaults.ColumnModel.Formatter.OutputFormat) && (jqGridColumnFormatterAttribute.OutputFormat.IndexOfAny(_invalidDateFormatTokens) == -1))
                {
                    string datePickerDateFormat = Regex.Replace(jqGridColumnFormatterAttribute.OutputFormat, _ignoredDateFormatTokensRegexExpression, String.Empty);
                    datePickerDateFormat = _dateFormatTokensRegex.Replace(datePickerDateFormat, match => { return(_dateFormatTokensReplecements[match.Value]); });

                    if (setSearchOptionsDatePickerDateFormat)
                    {
                        columnModel.SearchOptions.DatePickerDateFormat = datePickerDateFormat;
                    }

                    if (setEditOptionsDatePickerDateFormat)
                    {
                    }
                }
            }
            return(columnModel);
        }
        private static StringBuilder AppendColumnModelEditOptions(this StringBuilder javaScriptBuilder, JqGridColumnModel columnModel, JqGridOptions options, bool asSubgrid)
        {
            javaScriptBuilder.AppendJavaScriptObjectBooleanField(JqGridOptionsNames.ColumnModel.EDITABLE, columnModel.Editable, JqGridOptionsDefaults.ColumnModel.Editable);

            if (columnModel.Editable)
            {
                bool isJQueryUIElement = (columnModel.EditType == JqGridColumnEditTypes.JQueryUIAutocomplete) || (columnModel.EditType == JqGridColumnEditTypes.JQueryUIDatepicker) || (columnModel.EditType == JqGridColumnEditTypes.JQueryUISpinner);
                bool isNativeElement   = (columnModel.EditType == JqGridColumnEditTypes.Date) || (columnModel.EditType == JqGridColumnEditTypes.DateTimeLocal);

                if (!isJQueryUIElement && !isNativeElement)
                {
                    javaScriptBuilder.AppendJavaScriptObjectEnumField(JqGridOptionsNames.ColumnModel.EDIT_TYPE, columnModel.EditType, JqGridOptionsDefaults.ColumnModel.EditType);
                }

                if ((columnModel.EditOptions != null) && (isJQueryUIElement || isNativeElement || !columnModel.EditOptions.AreDefault()))
                {
                    javaScriptBuilder.AppendJavaScriptObjectFieldOpening(JqGridOptionsNames.ColumnModel.EDIT_OPTIONS)
                    .AppendJavaScriptObjectFunctionField(JqGridOptionsNames.ColumnModel.Editing.CUSTOM_ELEMENT, columnModel.EditOptions.CustomElementFunction)
                    .AppendJavaScriptObjectFunctionField(JqGridOptionsNames.ColumnModel.Editing.CUSTOM_VALUE, columnModel.EditOptions.CustomValueFunction)
                    .AppendJavaScriptObjectBooleanField(JqGridOptionsNames.ColumnModel.Editing.NULL_IF_EMPTY, columnModel.EditOptions.NullIfEmpty, JqGridOptionsDefaults.ColumnModel.Editing.NullIfEmpty);

                    if (!String.IsNullOrWhiteSpace(columnModel.EditOptions.PostDataScript))
                    {
                        javaScriptBuilder.AppendJavaScriptObjectFunctionField(JqGridOptionsNames.ColumnModel.Editing.POST_DATA, columnModel.EditOptions.PostDataScript);
                    }
                    else if (columnModel.EditOptions.PostData != null)
                    {
                        javaScriptBuilder.AppendJavaScriptObjectObjectField(JqGridOptionsNames.ColumnModel.Editing.POST_DATA, columnModel.EditOptions.PostData);
                    }

                    if ((columnModel.EditOptions.HtmlAttributes != null) && (columnModel.EditOptions.HtmlAttributes.Count > 0))
                    {
                        javaScriptBuilder.AppendJavaScriptObjectObjectPropertiesFields(columnModel.EditOptions.HtmlAttributes);
                    }

                    switch (columnModel.EditType)
                    {
                    case JqGridColumnEditTypes.Date:
                        javaScriptBuilder.AppendJavaScriptObjectFunctionField(JqGridOptionsNames.ColumnModel.Element.DATA_INIT, DATE_DATA_INIT);
                        break;

                    case JqGridColumnEditTypes.DateTimeLocal:
                        javaScriptBuilder.AppendJavaScriptObjectFunctionField(JqGridOptionsNames.ColumnModel.Element.DATA_INIT, DATE_TIME_LOCAL_DATA_INIT);
                        break;

                    case JqGridColumnEditTypes.JQueryUIAutocomplete:
                        javaScriptBuilder.AppendColumnModelJQueryUIAutocompleteDataInit(columnModel.EditOptions);
                        break;

                    case JqGridColumnEditTypes.JQueryUIDatepicker:
                        javaScriptBuilder.AppendColumnModelJQueryUIDatepickerDataInit(columnModel.EditOptions, options, asSubgrid);
                        break;

                    case JqGridColumnEditTypes.JQueryUISpinner:
                        javaScriptBuilder.AppendColumnModelJQueryUISpinnerDataInit(columnModel.EditOptions);
                        break;
                    }

                    javaScriptBuilder.AppendColumnModelElementOptions(columnModel.EditOptions, isJQueryUIElement)
                    .AppendJavaScriptObjectFieldClosing();
                }

                javaScriptBuilder.AppendColumnModelRules(JqGridOptionsNames.ColumnModel.EDIT_RULES, columnModel.EditRules)
                .AppendColumnModelFormOptions(columnModel.FormOptions);
            }

            return(javaScriptBuilder);
        }
        private static StringBuilder AppendColumnModelSearchOptions(this StringBuilder javaScriptBuilder, JqGridColumnModel columnModel, JqGridOptions options, bool asSubgrid)
        {
            javaScriptBuilder.AppendJavaScriptObjectBooleanField(JqGridOptionsNames.ColumnModel.SEARCHABLE, columnModel.Searchable, JqGridOptionsDefaults.ColumnModel.Searchable);

            if (columnModel.Searchable)
            {
                bool isJQueryUIElement = (columnModel.SearchType == JqGridColumnSearchTypes.JQueryUIAutocomplete) || (columnModel.SearchType == JqGridColumnSearchTypes.JQueryUIDatepicker) || (columnModel.SearchType == JqGridColumnSearchTypes.JQueryUISpinner);
                bool isNativeElement   = (columnModel.SearchType == JqGridColumnSearchTypes.Date) || (columnModel.SearchType == JqGridColumnSearchTypes.DateTimeLocal);
                if (!isJQueryUIElement && !isNativeElement)
                {
                    javaScriptBuilder.AppendJavaScriptObjectEnumField(JqGridOptionsNames.ColumnModel.SEARCH_TYPE, columnModel.SearchType, JqGridOptionsDefaults.ColumnModel.SearchType);
                }

                if ((columnModel.SearchOptions != null) && (isJQueryUIElement || isNativeElement || !columnModel.SearchOptions.AreDefault()))
                {
                    javaScriptBuilder.AppendJavaScriptObjectFieldOpening(JqGridOptionsNames.ColumnModel.SEARCH_OPTIONS)
                    .AppendJavaScriptObjectObjectField(JqGridOptionsNames.ColumnModel.Searching.HTML_ATTRIBUTES, columnModel.SearchOptions.HtmlAttributes)
                    .AppendJavaScriptObjectBooleanField(JqGridOptionsNames.ColumnModel.Searching.CLEAR_SEARCH, columnModel.SearchOptions.ClearSearch, JqGridOptionsDefaults.ColumnModel.Searching.ClearSearch)
                    .AppendJavaScriptObjectBooleanField(JqGridOptionsNames.ColumnModel.Searching.SEARCH_HIDDEN, columnModel.SearchOptions.SearchHidden, JqGridOptionsDefaults.ColumnModel.Searching.SearchHidden)
                    .AppendSearchOperators(columnModel.SearchOptions.SearchOperators);

                    switch (columnModel.SearchType)
                    {
                    case JqGridColumnSearchTypes.Date:
                        javaScriptBuilder.AppendJavaScriptObjectFunctionField(JqGridOptionsNames.ColumnModel.Element.DATA_INIT, DATE_DATA_INIT);
                        break;

                    case JqGridColumnSearchTypes.DateTimeLocal:
                        javaScriptBuilder.AppendJavaScriptObjectFunctionField(JqGridOptionsNames.ColumnModel.Element.DATA_INIT, DATE_TIME_LOCAL_DATA_INIT);
                        break;

                    case JqGridColumnSearchTypes.JQueryUIAutocomplete:
                        javaScriptBuilder.AppendColumnModelJQueryUIAutocompleteDataInit(columnModel.SearchOptions);
                        break;

                    case JqGridColumnSearchTypes.JQueryUIDatepicker:
                        javaScriptBuilder.AppendColumnModelJQueryUIDatepickerDataInit(columnModel.SearchOptions, options, asSubgrid);
                        break;

                    case JqGridColumnSearchTypes.JQueryUISpinner:
                        javaScriptBuilder.AppendColumnModelJQueryUISpinnerDataInit(columnModel.SearchOptions);
                        break;
                    }

                    javaScriptBuilder.AppendColumnModelElementOptions(columnModel.SearchOptions, isJQueryUIElement)
                    .AppendJavaScriptObjectFieldClosing();
                }

                javaScriptBuilder.AppendColumnModelRules(JqGridOptionsNames.ColumnModel.SEARCH_RULES, columnModel.SearchRules);
            }

            return(javaScriptBuilder);
        }
        private static StringBuilder AppendColumnModelSortOptions(this StringBuilder javaScriptBuilder, JqGridColumnModel columnModel)
        {
            javaScriptBuilder.AppendJavaScriptObjectStringField(JqGridOptionsNames.ColumnModel.INDEX, columnModel.Index)
            .AppendJavaScriptObjectEnumField(JqGridOptionsNames.ColumnModel.INITIAL_SORTING_ORDER, columnModel.InitialSortingOrder, JqGridOptionsDefaults.ColumnModel.Sorting.InitialOrder);

            if (columnModel.Sortable != JqGridOptionsDefaults.ColumnModel.Sorting.Sortable)
            {
                javaScriptBuilder.AppendJavaScriptObjectBooleanField(JqGridOptionsNames.ColumnModel.SORTABLE, columnModel.Sortable);
            }
            else
            {
                if (columnModel.SortType == JqGridSortTypes.Function)
                {
                    javaScriptBuilder.AppendJavaScriptObjectFunctionField(JqGridOptionsNames.ColumnModel.SORT_TYPE, columnModel.SortFunction);
                }
                else
                {
                    javaScriptBuilder.AppendJavaScriptObjectEnumField(JqGridOptionsNames.ColumnModel.SORT_TYPE, columnModel.SortType, JqGridOptionsDefaults.ColumnModel.Sorting.Type);
                }
            }

            return(javaScriptBuilder);
        }
        private static StringBuilder AppendColumnModelSummaryOptions(this StringBuilder javaScriptBuilder, JqGridColumnModel columnModel, JqGridOptions options)
        {
            if (options.GroupingEnabled)
            {
                if (columnModel.SummaryType.HasValue)
                {
                    if (columnModel.SummaryType.Value != JqGridColumnSummaryTypes.Custom)
                    {
                        javaScriptBuilder.AppendJavaScriptObjectEnumField(JqGridOptionsNames.ColumnModel.SUMMARY_TYPE, columnModel.SummaryType.Value);
                    }
                    else
                    {
                        javaScriptBuilder.AppendJavaScriptObjectFunctionField(JqGridOptionsNames.ColumnModel.SUMMARY_TYPE, columnModel.SummaryFunction);
                    }
                }

                javaScriptBuilder.AppendJavaScriptObjectStringField(JqGridOptionsNames.ColumnModel.SUMMARY_TEMPLATE, columnModel.SummaryTemplate, JqGridOptionsDefaults.ColumnModel.SummaryTemplate);
            }

            return(javaScriptBuilder);
        }
        private static StringBuilder AppendColumnModelFormatter(this StringBuilder javaScriptBuilder, JqGridColumnModel columnModel)
        {
            if (!String.IsNullOrWhiteSpace(columnModel.Formatter))
            {
                if (columnModel.Formatter == JqGridPredefinedFormatters.JQueryUIButton)
                {
                    javaScriptBuilder.AppendColumnModelJQueryUIButtonFormatter(columnModel.FormatterOptions);
                }
                else
                {
                    javaScriptBuilder.AppendJavaScriptObjectFunctionField(JqGridOptionsNames.ColumnModel.FORMATTER, columnModel.Formatter)
                    .AppendColumnModelFormatterOptions(columnModel.Formatter, columnModel.FormatterOptions)
                    .AppendJavaScriptObjectFunctionField(JqGridOptionsNames.ColumnModel.UNFORMATTER, columnModel.UnFormatter);
                }
            }

            return(javaScriptBuilder);
        }