예제 #1
0
        private static void ConfigureCrudButtons(Grid grid, GridMetamodel gridModel)
        {
            if (gridModel.DetailsLink.IsEnabled)
            {
                grid.AddColumn(new Column("DetailsLink")
                               .SetLabel(gridModel.DetailsLink.Text)
                               .SetWidth(70).SetFixedWidth(true)
                               .SetSortable(false)
                               .SetSearch(false)
                               .SetCustomFormatter("buildDetailsLink"));
            }

            if (gridModel.EditLink.IsEnabled)
            {
                grid.AddColumn(new Column("EditLink")
                               .SetLabel(gridModel.EditLink.Text)
                               .SetWidth(50).SetFixedWidth(true)
                               .SetSortable(false)
                               .SetSearch(false)
                               .SetCustomFormatter("buildEditLink"));
            }

            if (gridModel.DeleteLink.IsEnabled)
            {
                grid.AddColumn(new Column("DeleteLink")
                               .SetLabel(gridModel.DeleteLink.Text)
                               .SetWidth(50).SetFixedWidth(true)
                               .SetSortable(false)
                               .SetSearch(false)
                               .SetCustomFormatter("buildDeleteLink"));
            }
        }
예제 #2
0
        public Grid Configure(GridMetamodel gridModel, string gridDataAction, string gridId)
        {
            var grid = this.html.Grid(gridId);

            ConfigureGrid(grid, gridModel, gridDataAction);
            this.ConfigureModelColumns(grid, gridModel);
            ConfigureCrudButtons(grid, gridModel);

            return(grid);
        }
예제 #3
0
        public static DataRequest <TGridModel> BuildGridDataRequest <TGridModel>(
            GridSettings gridSettings, GridMetamodel <TGridModel> gridMetamodel)
            where TGridModel : IGridModelBase
        {
            var sortSettings   = PrepareSortSettings(gridSettings, gridMetamodel.DefaultSortSettings);
            var searchSettings = FillSearchFilter(gridMetamodel, gridSettings);
            var request        = new DataRequest <TGridModel>(gridSettings.PageIndex, gridSettings.PageSize, sortSettings, searchSettings);

            return(request);
        }
예제 #4
0
        private void ConfigureModelColumns(Grid grid, GridMetamodel gridModel)
        {
            foreach (var metamodel in gridModel.Columns)
            {
                var metamodelType = metamodel.GetType();
                var configurator  = this.GetConfigurator(metamodelType);
                var column        = configurator.Render(metamodel);

                grid.AddColumn(column);
            }
        }
예제 #5
0
        public static MvcHtmlString JqGrid(this HtmlHelper html, GridMetamodel gridModel, string gridDataAction)
        {
            var gridId = "mainGrid";

            var configurator = new JqGridConfigurator(html);
            var grid         = configurator.Configure(gridModel, gridDataAction, gridId);

            var gridMarkup = JqGridConfigurationUpdater.FixGridConfiguration(
                grid.ToString(), gridId, UiTexts.GridButton_Clear, UiTexts.GridSearch_DropDown_All);

            return(MvcHtmlString.Create(gridMarkup));
        }
예제 #6
0
        // TODO: [SMELL!!] this should be handled by IoC container not controller itself!
        private void InitCachedConfiguration()
        {
            var type = this.GetType();

            if (!configuredControllers.Contains(type))
            {
                gridMetamodel            = this.GetGridMetamodel();
                typeToJqGridObjectMapper = TypeToJqGridObjectMapperGenerator.GetMapper <TGridModel>(idPropertyName, gridMetamodel.ViewModelPropertiesNames);

                configuredControllers.Add(type);
            }
        }
예제 #7
0
        private static FilterConfiguration <TGridModel> FillSearchFilter <TGridModel>(
            GridMetamodel <TGridModel> gridMetamodel, GridSettings gridSettings)
            where TGridModel : IGridModelBase
        {
            var conditions = new List <FilterCondition>();

            if (gridSettings.IsSearch)
            {
                foreach (var rule in gridSettings.Where.rules)
                {
                    var propertiesColumns = gridMetamodel.Columns.OfType <PropertyColumnMetamodel>();
                    var column            = propertiesColumns.Single(c => c.Name == rule.field);
                    var condition         = new FilterCondition(column.Name, column.Filter.Operator, column.PropertyType, rule.data);
                    conditions.Add(condition);
                }
            }

            return(new FilterConfiguration <TGridModel>(conditions));
        }
예제 #8
0
 private static void ConfigureGrid(Grid grid, GridMetamodel gridModel, string gridDataAction)
 {
     grid
     // basic:
     .SetCaption(gridModel.Caption)
     .SetUrl(gridDataAction)
     .SetHideGrid(false)
     .SetAutoWidth(true)
     // pagination:
     .SetPager("pager")
     .SetTopPager(true)
     .SetRowList(new[] {
         10, 20, 50, 100
     })
     .SetViewRecords(true)
     // sorting and filtering:
     .SetShowAllSortIcons(true)
     .SetSearchToolbar(true)
     .SetSearchOnEnter(true)
     .SetSearchClearButton(true)
     // events:
     .OnGridComplete("gridComplete()")
     .OnLoadError("showGridError(xhr.responseText);");
 }