/// <summary> /// Adds the specified name. /// </summary> /// <typeparam name="T1">The type of the t1.</typeparam> /// <param name="name">The name.</param> /// <param name="mapping">The mapping.</param> /// <exception cref="ArgumentException"> /// name /// or /// name /// </exception> /// <exception cref="Exception"> /// </exception> /// TODO Edit XML Comment Template for Add`1 public static void Add <T1>(string name, GridDefinition <T1> mapping) { if (Table.ContainsKey(name)) { throw new ArgumentException( $"There is already a grid definition with the name '{name}'.", nameof(name)); } if (mapping.RetrieveData == null) { throw new ArgumentException( $"There is no RetrieveData expression defined for grid '{name}'.", nameof(name)); } if (mapping.Sorting && string.IsNullOrWhiteSpace(mapping.DefaultSortColumn)) { throw new Exception( $"Grid '{name}': When sorting is enabled, a default sort column must be specified"); } if (mapping.AdditionalQueryOptionNames.Count > 0) { // TODO: dynamically get names var forbiddenNames = new HashSet <string> { QueryStringParser.QueryStringSuffixPage, QueryStringParser.QueryStringSuffixSort, QueryStringParser.QueryStringSuffixSortDir, QueryStringParser.QueryStringSuffixEngine, QueryStringParser.QueryStringSuffixItemsPerPage, QueryStringParser.QueryStringSuffixColumns }; mapping.GetColumns() .ToList() .ForEach(col => forbiddenNames.Add(col.ColumnName)); foreach (var forbiddenName in forbiddenNames) { if (mapping.AdditionalQueryOptionNames.Contains( forbiddenName, StringComparer.InvariantCultureIgnoreCase)) { throw new Exception( $"Grid '{name}': Invalid additional query option name: '{forbiddenName}'. Cannot be column name or reserved keyword."); } } } Table.Add(name, mapping); }
public static void Add <T1>(string name, GridDefinition <T1> mapping) { if (mapping.RetrieveData == null) { throw new ArgumentException( String.Format("There is no RetrieveData expression defined for grid '{0}'.", name), "RetrieveData"); } if (mapping.Sorting && String.IsNullOrWhiteSpace(mapping.DefaultSortColumn)) { throw new Exception( String.Format("Grid '{0}': When sorting is enabled, a default sort column must be specified", name)); } if (mapping.AdditionalQueryOptionNames.Count > 0) { // TODO: dynamically get names HashSet <string> forbiddenNames = new HashSet <string>(); forbiddenNames.Add(QueryStringParser.QueryStringSuffix_Page); forbiddenNames.Add(QueryStringParser.QueryStringSuffix_Sort); forbiddenNames.Add(QueryStringParser.QueryStringSuffix_SortDir); forbiddenNames.Add(QueryStringParser.QueryStringSuffix_Engine); forbiddenNames.Add(QueryStringParser.QueryStringSuffix_ItemsPerPage); forbiddenNames.Add(QueryStringParser.QueryStringSuffix_Columns); mapping.GetColumns().ToList().ForEach(col => forbiddenNames.Add(col.ColumnName)); foreach (var forbiddenName in forbiddenNames) { if (mapping.AdditionalQueryOptionNames.Contains(forbiddenName, StringComparer.InvariantCultureIgnoreCase)) { throw new Exception(String.Format("Grid '{0}': Invalid additional query option name: '{1}'. Cannot be column name or reserved keyword.", name, forbiddenName)); } } } _table.Add(name, mapping); }