public void refreshFields() { DatabaseAdmin dba = DatabaseAdmin.getInstance(_schema.ConnectionName); DataSet ds = getDataSet(); if (ds == null || ds.Tables.Count < 1) { return; } foreach (DataColumn col in ds.Tables[0].Columns) { FieldSchema fs = _schema.Fields.FindItem(col.ColumnName); if (fs == null) { fs = new FieldSchema(); fs.Id = col.ColumnName; fs.DataType = dba.getDbType(col.DataType); _schema.Fields.Add(fs); } } if (DataSourceSchemaContainer.Instance().Contains(_name)) { DataSourceSchemaContainer.Instance().UpdateItem(_name, _schema); } }
public static DataSourceSchema buildTableSchema(string connName, string tableName, string dsId) { DataSourceSchema ret = DataSourceSchemaBuilder.BuildTableSchema(connName, tableName); DataSourceSchemaContainer.Instance().AddItem(dsId, ret); return(ret); }
/// <summary> ///根据tableName参数,为客户端请求,建立Table的框架格式。 /// </summary> /// <param name="fieldName"></param> /// <param name="schema"></param> internal void ImportTableSchema(string tableName, WbdlSchema schema) { DataSourceSchema tableSchema = DataSourceSchemaContainer.Instance().GetItem(tableName); string keyField = tableSchema.PrimaryKeys + "_Key"; foreach (FieldBindSchema fieldBind in schema.FieldBinds) { if (fieldBind.TableId.Equals(tableName, StringComparison.OrdinalIgnoreCase)) { if (!this.ContainsKey(fieldBind.Id)) { this.Add(fieldBind.Id, ""); } // this. } } if (!this.ContainsKey(keyField)) { this.Add(keyField, ""); } foreach (DataListBindSchema listBind in schema.DataListBinds) { string listKey = listBind.Id + WbapDataType._List.ToString(); WbapList dataList = null; if (this.ContainsKey(listKey)) { dataList = this[listKey] as WbapList; } else { dataList = new WbapList(); this.Add(listBind.Id + WbapDataType._List.ToString(), dataList); } foreach (FieldBindSchema fieldBind in listBind.Columns) { if (fieldBind.TableId.Equals(tableName, StringComparison.OrdinalIgnoreCase)) { if (dataList == null) { dataList = new WbapList(); this.Add(listBind.Id + WbapDataType._List.ToString(), dataList); } dataList.Columns.Add(fieldBind.Id); } } dataList.Columns.Add(keyField); } }
private void updateSubTables(ListDataRow row, List <SubTable> subTables) { if (subTables == null || subTables.Count < 1) { return; } for (int c = 0; c < subTables.Count; c++) { string subTable = subTables[c].Name; DataSourceSchema ds = DataSourceSchemaContainer.Instance().GetItem(subTable); if (ds.SelectCommand.CommandType != CommandType.TableDirect) { throw new XException(string.Format(Lang.SubTableSelCommandTypeOnlyIsTable, subTable)); } SubTableSchema sds = DataSourceComm.getSubTableSchema(subTable, _schema); Dictionary <string, string> parametes = new Dictionary <string, string>(); for (int i = 0; i < sds.Fks.Count; i++) { string fk = sds.Fks[i]; parametes.Add("@" + fk, row[_schema.PrimaryKeys[i]]); } DsAdapter dsa = new DsAdapterCustomer(ds); List <ListDataRow> subRows = subTables[c].Rows; for (int i = 0; i < subRows.Count; i++) { ListDataRow subRow = subRows[i]; if (DataSourceComm.isNewRow(subRow)) { dsa.insert(subRow, parametes); } else { dsa.update(subRow, parametes); } } } }
public void setFieldTitle(string field, string title) { if (_isSourceTable) { return; } _fieldColumns = null; FieldSchema fieldSchema = _schema.Fields.FindItem(field); if (fieldSchema == null) { return; } fieldSchema.Title = title; if (DataSourceSchemaContainer.Instance().Contains(_name)) { DataSourceSchemaContainer.Instance().UpdateItem(_name, _schema); } }
public void setFieldWidth(string field, int width) { if (_isSourceTable) { return; } _fieldColumns = null; FieldSchema fieldSchema = _schema.Fields.FindItem(field); if (fieldSchema == null) { return; } fieldSchema.DisplayWidth = width; if (DataSourceSchemaContainer.Instance().Contains(_name)) { DataSourceSchemaContainer.Instance().UpdateItem(_name, _schema); } }
public void setColumns(List <DataListColumn> cols) { foreach (DataListColumn col in cols) { FieldSchema fldSch = _schema.Fields.FindItem(col.field); if (fldSch == null) { continue; } fldSch.DisplayWidth = col.width; fldSch.Title = col.title; } if (DataSourceSchemaContainer.Instance().Contains(_name)) { DataSourceSchemaContainer.Instance().UpdateItem(name, _schema); } _fieldColumns = null; }
public static DataSourceSchema BuildTableSchema(string connName, string tableName) { string defCon = ConnectionAdmin.getDefaultConnName(); if (connName.Equals(defCon, StringComparison.OrdinalIgnoreCase)) { connName = null; } string sql = "Select top " + DEF_PAGE_SIZE.ToString() + " * From [" + tableName + "]"; DataSourceSchema ret = CreateTableSchema(tableName, connName, sql); string dsId = tableName; if (!string.IsNullOrEmpty(connName)) { dsId = connName + "." + dsId; } DataSourceSchemaContainer.Instance().AddItem(dsId, ret); return(ret); }
private void loadSchema() { _ds = null; _fieldColumns = null; _pagination = new PaginationInfo(); if (DataSourceSchemaContainer.Instance().Contains(name)) { _schema = DataSourceSchemaContainer.Instance().GetItem(name); _schema.ChangedEvent += schemaChanged; if (_schema.SelectCommand == null) { throw new XException(Lang.DataSourceNotSelectCommand); } _isSourceTable = false; //_schema.SelectCommand.CommandType == CommandType.TableDirect; } else { _isSourceTable = true; _schema = DataSourceSchemaBuilder.BuildTableSchema(_name); } }
/// <summary> /// //用物理数据库中的字段及表信息,重新更新XTableSchema信息 /// </summary> /// <param name="tableId"></param> /// <param name="schema"></param> public static void RefreshSchemaFields(string tableId, DataSourceSchema schema) { BuildFields(schema); DataSourceSchemaContainer.Instance().UpdateItem(tableId, schema); }