public static MetaColumn Create(string name) { MetaColumn result = new MetaColumn() { Name = name, DisplayName = name, Type = ColumnType.Text, Category = "Default" }; result.GUID = Guid.NewGuid().ToString(); return result; }
public void Refresh() { if (_source == null || !DynamicColumns) { return; } try { _information = ""; _error = ""; MustRefresh = true; //Build table def from SQL or table name DataTable defTable = GetDefinitionTable(IsForSQLModel ? Sql : string.Format("SELECT * FROM {0} WHERE 1=0", FullSQLName)); foreach (DataColumn column in defTable.Columns) { string fullColumnName = (IsSQL && !IsForSQLModel ? Source.GetTableName(AliasName) + "." : "") + Source.GetColumnName(column.ColumnName); MetaColumn newColumn = Columns.FirstOrDefault(i => i.Name == fullColumnName); ColumnType type = Helper.NetTypeConverter(column.DataType); if (newColumn == null) { newColumn = MetaColumn.Create(fullColumnName); newColumn.Source = _source; newColumn.DisplayName = (KeepColumnNames ? column.ColumnName.Trim() : Helper.DBNameToDisplayName(column.ColumnName.Trim())); newColumn.Category = (Alias == MetaData.MasterTableName ? "Master" : AliasName); newColumn.DisplayOrder = GetLastDisplayOrder(); Columns.Add(newColumn); newColumn.Type = type; newColumn.SetStandardFormat(); } newColumn.Source = _source; if (type != newColumn.Type) { newColumn.Type = type; newColumn.SetStandardFormat(); } } //Clear columns for No SQL or SQL Model if (!IsSQL || IsForSQLModel) { Columns.RemoveAll(i => !defTable.Columns.Contains(i.Name)); } MustRefresh = false; _information = "Dynamic columns have been refreshed successfully"; } catch (Exception ex) { _error = ex.Message; _information = "Error got when refreshing dynamic columns."; } _information = Helper.FormatMessage(_information); UpdateEditorAttributes(); }