internal static void LoadTableColumns(Table table, DataBaseColumnInformation dbci) { ColumnType columnType = MapColumnType(Type.GetTypeCode(dbci.dataType)); if (table.Columns.GetIndex(dbci.columnName) == -1) { Column column = Column.GetColumnFromType(dbci.columnName, table, columnType); column.m_Table = table; column.IsCreatedByWebGrid = true; table.Columns.Add(column); } else if (table.Columns[dbci.columnName].ColumnType == ColumnType.Unknown) table.Columns[dbci.columnName].ColumnType = columnType; if (columnType == ColumnType.File || columnType == ColumnType.Image) table.Columns[dbci.columnName].IsBlob = true; else if ((table.Columns[dbci.columnName].ColumnType == ColumnType.File || table.Columns[dbci.columnName].ColumnType == ColumnType.Image) && string.IsNullOrEmpty(table.Columns[dbci.columnName].FileNameColumn)) table.Columns[dbci.columnName].FileNameColumn = table.Columns[dbci.columnName].ColumnId; table.Columns[dbci.columnName].LoadDataSourceInformation(dbci); }
internal static void LoadColumnSettings(DataTable columnSettings, Table table) { if (columnSettings == null) return; if (!"SchemaTable".Equals(columnSettings.TableName)) columnSettings = columnSettings.CreateDataReader().GetSchemaTable(); int displayindex = 10; foreach (DataRow row in columnSettings.Rows) { DataBaseColumnInformation dbci = new DataBaseColumnInformation { dataType = row["DataType"] as Type, canNull = (bool) row["AllowDBNull"], displayindex = displayindex }; displayindex += 10; dbci.columnName = row["ColumnName"] as string; if (dbci.dataType == typeof (string)) dbci.maxSize = (int?) row["ColumnSize"]; dbci.title = dbci.columnName; dbci.defaultDataSourceId = row["BaseTableName"] as string; // dbci.defaultValue = datacolumn.DefaultValue; if (columnSettings.Columns.Contains("IsKey") && (bool) row["IsKey"]) { dbci.uniquevalue = true; dbci.primaryKey = true; } if ((columnSettings.Columns.Contains("IsIdentity") && (bool) row["IsIdentity"]) || (columnSettings.Columns.Contains("IsAutoIncrement") && (bool) row["IsAutoIncrement"])) { dbci.readOnly = true; dbci.identity = true; } else dbci.readOnly = (bool) row["IsReadOnly"]; LoadTableColumns(table, dbci); } if (displayindex > 10) table.m_LoadedTableSchema = true; }