Пример #1
0
        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);
            }
        }
Пример #2
0
        public static DataSourceSchema buildTableSchema(string connName, string tableName, string dsId)
        {
            DataSourceSchema ret = DataSourceSchemaBuilder.BuildTableSchema(connName, tableName);

            DataSourceSchemaContainer.Instance().AddItem(dsId, ret);
            return(ret);
        }
Пример #3
0
        /// <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);
            }
        }
Пример #4
0
        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);
                    }
                }
            }
        }
Пример #5
0
        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);
            }
        }
Пример #6
0
        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);
            }
        }
Пример #7
0
        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;
        }
Пример #8
0
        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);
        }
Пример #9
0
 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);
     }
 }
Пример #10
0
 /// <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);
 }