public ActionGrid(IDbConnection connection, IGridOptions options, IFilter filter = null) { _gridOptions = options; _connection = connection; _filter = filter; _optionsFilter = (_gridOptions as IFilterOptions <TFilter>)?.Filter; _gridModel = CreateGridModel(); _sql = _gridModel.GridSql; }
public void Init(IGridOptions options) { _options = options ?? new GridOptions(); this.MergeGridOptions(_options); }
public RowGrid(TResult model, IGridOptions options) { _model = model; _gridOptions = options; _gridModel = CreateGridModel(); }
public static void MergeGridOptions <TModel>(this IGridModel <TModel> gridModel, IGridOptions options) where TModel : class { gridModel.InitOrders(); options.PageOpt = options.PageOpt ?? new Dictionary <string, string>(); options.ColOpt = options.ColOpt ?? new Dictionary <string, Dictionary <string, object> >(); #region PageOptions var page = options.PageOpt.ContainsKey("p") ? Convert.ToInt32(options.PageOpt["p"]) : gridModel.Page; if (page == gridModel.Page) { options.PageOpt.Remove("p"); } else { gridModel.Page = page; } var pageSize = options.PageOpt.ContainsKey("ps") ? Convert.ToInt32(options.PageOpt["ps"]) : gridModel.PageSize; if (pageSize == gridModel.PageSize) { options.PageOpt.Remove("ps"); } else { gridModel.PageSize = pageSize; } var groupPageSize = options.PageOpt.ContainsKey("gps") ? Convert.ToInt32(options.PageOpt["gps"]) : gridModel.PageSizeInGroup; if (groupPageSize == gridModel.PageSizeInGroup) { options.PageOpt.Remove("gps"); } else { gridModel.PageSizeInGroup = groupPageSize; } #endregion foreach (var column in options.ColOpt) { if (column.Value == null || !column.Value.Any()) { continue; } var columnOptions = column.Value; var col = gridModel.Columns.FirstOrDefault(x => x.Key == column.Key); #region Column var order = columnOptions.ContainsKey("co") && columnOptions["co"] != null ? (Convert.ToInt32(columnOptions["co"])) : col.Value.Order; if (order == col.Value.Order) { columnOptions.Remove("co"); } else { col.Value.Order = order; } var visible = columnOptions.ContainsKey("vc") && columnOptions["vc"] != null ? (Convert.ToBoolean(columnOptions["vc"])) : col.Value.IsVisible; if (visible == col.Value.IsVisible) { columnOptions.Remove("vc"); } else { col.Value.IsVisible = visible; } #endregion #region Sorting if (gridModel.Multisort) { var sortOrder = columnOptions.ContainsKey("so") ? Helpers.ToNullable <Int32>(columnOptions["so"]) : col.Value.SortOrder; if (sortOrder == col.Value.SortOrder) { columnOptions.Remove("so"); } else { col.Value.SortOrder = sortOrder; } } var sortDirection = columnOptions.ContainsKey("sd") ? (SortDirection?)Helpers.ToNullable <Int32>(columnOptions["sd"]) : col.Value.SortDirection; if (sortDirection == col.Value.SortDirection) { columnOptions.Remove("sd"); } else { col.Value.SortDirection = sortDirection; } #endregion #region Grouping var groupSortDirection = columnOptions.ContainsKey("gd") ? ((SortDirection?)Helpers.ToNullable <Int32>(columnOptions["gd"])) : col.Value.GroupSortDirection; if (groupSortDirection == col.Value.GroupSortDirection) { columnOptions.Remove("gd"); } else { col.Value.GroupSortDirection = groupSortDirection; } var groupOrder = columnOptions.ContainsKey("go") ? Helpers.ToNullable <Int32>(columnOptions["go"]) : col.Value.GroupOrder; if (groupOrder == col.Value.GroupOrder) { columnOptions.Remove("go"); } else { col.Value.GroupOrder = groupOrder; } #endregion } //Выставляем опции по умолчанию foreach (var column in gridModel.Columns.Where(c => c.Value.IsVisible && (c.Value.SortDirection.HasValue || c.Value.GroupOrder.HasValue))) { var key = column.Key; var existKey = options.ColOpt.ContainsKey(key); options.ColOpt[key] = existKey ? options.ColOpt[key] : new Dictionary <string, object>(); var columnOptions = options.ColOpt[key]; if (column.Value.SortDirection.HasValue) { if (!columnOptions.ContainsKey("sd")) { columnOptions["sd"] = (int)column.Value.SortDirection.Value; } if (!columnOptions.ContainsKey("so") && gridModel.Multisort) { columnOptions["so"] = column.Value.SortOrder; } } if (!column.Value.GroupOrder.HasValue) { continue; } if (!columnOptions.ContainsKey("go")) { columnOptions["go"] = column.Value.GroupOrder; } if (!columnOptions.ContainsKey("gd")) { columnOptions["gd"] = (int?)column.Value.GroupSortDirection; } } //Чистим пустые опции var emptyColumnOptions = options.ColOpt.Where(x => !x.Value.Any()).Select(x => x.Key).ToList(); foreach (var key in emptyColumnOptions) { options.ColOpt.Remove(key); } gridModel.InitOrders(); }
public IActionGridView <TModel> Init(IGridOptions options) { _model.Init(options); return(this); }
public GridColumnParameters(GridBand existingBand, IDynamicPropertyList headerList) { ExistingBand = existingBand; HeaderList = headerList; Options = new GridOptions(); }