/// <summary>
 /// clone一個DataRow
 /// </summary>
 /// <param name="rowindex"></param>
 /// <param name="todt"></param>
 public void CloneDataRow(int rowindex, ref DataTableStd todt)
 {
     if (todt.data.Count > rowindex)
     {
         todt.data.Add((FrameDLRObject)this.data[rowindex].Clone());
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 复制本表的结构
        /// </summary>
        /// <returns></returns>
        public DataTableStd CloneStd()
        {
            DataTableStd rtn = DataTableStd.ParseStd(this.Value.Copy());

            rtn.Value.Rows.Clear();
            return(rtn);
        }
Ejemplo n.º 3
0
 public DataTableStd this[int index]
 {
     get
     {
         return(DataTableStd.ParseStd(this.Tables[index]));
     }
 }
        /// <summary>
        /// 复制本表的结构
        /// </summary>
        /// <returns></returns>
        public DataTableStd CloneStd()
        {
            DataTableStd rtn = new DataTableStd();

            foreach (var item in pkContent)
            {
                rtn.pkContent.Add(new DataColumn()
                {
                    AllowDBNull       = item.AllowDBNull,
                    AutoIncrement     = item.AutoIncrement,
                    AutoIncrementSeed = item.AutoIncrementSeed,
                    AutoIncrementStep = item.AutoIncrementStep,
                    Caption           = item.Caption,
                    ColumnMapping     = item.ColumnMapping,
                    ColumnName        = item.ColumnName,
                    DataType          = item.DataType,
                    DateTimeMode      = item.DateTimeMode,
                    DefaultValue      = item.DefaultValue,
                    Expression        = item.Expression,
                    MaxLength         = item.MaxLength,
                    Namespace         = item.Namespace,
                    Prefix            = item.Prefix,
                    ReadOnly          = item.ReadOnly,
                    Site   = item.Site,
                    Unique = item.Unique
                });
            }
            foreach (var item in schema)
            {
                rtn.schema.Add(new DataColumn()
                {
                    AllowDBNull       = item.AllowDBNull,
                    AutoIncrement     = item.AutoIncrement,
                    AutoIncrementSeed = item.AutoIncrementSeed,
                    AutoIncrementStep = item.AutoIncrementStep,
                    Caption           = item.Caption,
                    ColumnMapping     = item.ColumnMapping,
                    ColumnName        = item.ColumnName,
                    DataType          = item.DataType,
                    DateTimeMode      = item.DateTimeMode,
                    DefaultValue      = item.DefaultValue,
                    Expression        = item.Expression,
                    MaxLength         = item.MaxLength,
                    Namespace         = item.Namespace,
                    Prefix            = item.Prefix,
                    ReadOnly          = item.ReadOnly,
                    Site   = item.Site,
                    Unique = item.Unique
                });
            }
            foreach (var item in data)
            {
                rtn.data.Add((FrameDLRObject)item.Clone());
            }
            return(rtn);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// clone一個DataRow
        /// </summary>
        /// <param name="rowindex"></param>
        /// <param name="todt"></param>
        public void CloneDataRow(int rowindex, ref DataTableStd todt)
        {
            DataRow rtn = todt.Value.NewRow();

            foreach (DataColumn dc in this.Value.Columns)
            {
                object v = GetValue(dc.ColumnName, rowindex);
                rtn[dc.ColumnName] = v == null ? DBNull.Value : v;
            }
            todt.Value.Rows.Add(rtn);
        }
        /// <summary>
        /// 根據指定columns转化成标准类型
        /// </summary>
        /// <param name="columns"></param>
        /// <returns></returns>
        public static DataTableStd ParseStd(string[] columns)
        {
            DataTableStd dt = new DataTableStd();

            for (int i = 0; i < columns.Length; i++)
            {
                dt.schema.Add(new DataColumn(columns[i]));
            }

            return(dt);
        }
Ejemplo n.º 7
0
        public override object Clone()
        {
            DataTableStd rtn = (DataTableStd)base.Clone();

            foreach (var s in this.pkContent)
            {
                rtn.pkContent.Add(s);
            }

            return(rtn);
        }
        /// <summary>
        /// 根據指定column个数转化成标准类型
        /// </summary>
        /// <param name="columnCount"></param>
        /// <returns></returns>
        public static DataTableStd ParseStd(int columnCount)
        {
            DataTableStd dt = new DataTableStd();

            for (int i = 0; i < columnCount; i++)
            {
                dt.schema.Add(new DataColumn("F" + i));
            }

            return(dt);
        }
Ejemplo n.º 9
0
 /// <summary>
 /// 转化成标准类型
 /// </summary>
 /// <param name="o"></param>
 /// <returns></returns>
 public static DataTableStd ParseStd(DataTable o)
 {
     if (o == null)
     {
         return(null);
     }
     else
     {
         DataTableStd dts = new DataTableStd();
         dts.Value = o;
         return(dts);
     }
 }
Ejemplo n.º 10
0
 /// <summary>
 /// 根据columnIndex和rowIndex获取指定table中的值
 /// </summary>
 /// <param name="tableIndex"></param>
 /// <param name="columnIndex"></param>
 /// <param name="rowIndex"></param>
 /// <returns></returns>
 public object GetValue(int tableIndex, int columnIndex, int rowIndex)
 {
     if (this == null)
     {
         return("");
     }
     else if (tableIndex >= this.Tables.Count)
     {
         return("");
     }
     else
     {
         return(DataTableStd.ParseStd(this.Tables[tableIndex]).GetValue(columnIndex, rowIndex));
     }
 }
Ejemplo n.º 11
0
        /// <summary>
        /// 根據条件表达式找出需要的数据并返回
        /// </summary>
        /// <param name="filterExpresstion"></param>
        /// <param name="sort"></param>
        /// <returns></returns>
        public DataTableStd SelectByWhere(string filterExpresstion, string sort)
        {
            DataRow[]    drs = this.Value.Select(filterExpresstion, sort);
            DataTableStd rtn = this.CloneStd();

            foreach (DataRow dr in drs)
            {
                foreach (string colname in this.ColumnNames)
                {
                    rtn.SetNewRowValue(dr[colname], colname);
                }
                rtn.AddNewRow();
            }
            return(rtn);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Clone
        /// </summary>
        /// <returns></returns>
        public object Clone()
        {
            var rtn = new DataTableStd();

            foreach (var s in this.pkContent)
            {
                rtn.pkContent.Add(s);
            }
            foreach (var item in this.data)
            {
                rtn.data.Add((FrameDLRObject)item.Clone());
            }

            return(rtn);
        }
Ejemplo n.º 13
0
 /// <summary>
 /// 根据过滤条件获得指定栏位的值,如果过滤条件不够精确导致得到的结果过多,将抛出异常
 /// </summary>
 /// <param name="tableIndex"></param>
 /// <param name="columnName"></param>
 /// <param name="filterExpression"></param>
 /// <returns></returns>
 public object GetValueByWhere(int tableIndex, string columnName, string filterExpression)
 {
     if (this == null)
     {
         return("");
     }
     else if (tableIndex >= this.Tables.Count)
     {
         return("");
     }
     else
     {
         return(DataTableStd.ParseStd(this.Tables[tableIndex]).GetValueByWhere(columnName, filterExpression));
     }
 }
Ejemplo n.º 14
0
        /// <summary>
        /// 从游标中填充数据。用于协助没有提供DataAdapter的驱动使用
        /// </summary>
        /// <param name="ddr"></param>
        /// <returns></returns>
        public static DataSetStd FillData(DbDataReader ddr)
        {
            var rtn = new DataSetStd();

            if (ddr != null)
            {
                var index = 0;
                do
                {
                    var dt = DataTableStd.ParseStd(ddr);
                    rtn._tables.Add(dt);
                } while (ddr.NextResult());
            }
            return(rtn);
        }
Ejemplo n.º 15
0
 /// <summary>
 /// 转化成标准类型
 /// </summary>
 /// <param name="o"></param>
 /// <returns></returns>
 public static DataTableStd ParseStd(DataTable o)
 {
     if (o == null)
     {
         return(null);
     }
     else
     {
         DataTableStd dts = new DataTableStd();
         foreach (DataColumn c in o.Columns)
         {
             dts.AddColumn(c, o.PrimaryKey.Contains(c));
         }
         return(dts);
     }
 }
Ejemplo n.º 16
0
 /// <summary>
 /// 将from表中的数据写入到本表中,按照欄位名稱对应,Append方式
 /// </summary>
 /// <param name="from"></param>
 public void SetValueApppend_From(DataTableStd from)
 {
     for (int i = 0; i < from.RowLength; i++)
     {
         foreach (var dc in from.schema)
         {
             var mycolumn = this.schema.Where(w => w.ColumnName.ToLower() == dc.ColumnName.ToLower()).First();
             if (this.schema.Where(w => w.ColumnName.ToLower() == dc.ColumnName.ToLower()).Count() > 0 &&
                 mycolumn.DataType == dc.DataType)
             {
                 this.SetNewRowValue(from[i, dc.ColumnName], dc.ColumnName);
             }
         }
         this.AddNewRow();
     }
 }
Ejemplo n.º 17
0
 /// <summary>
 /// 将from表中的数据写入到本表中,按照欄位名稱对应,Append方式
 /// </summary>
 /// <param name="from"></param>
 public void SetValueApppend_From(DataTableStd from)
 {
     for (int i = 0; i < from.RowLength; i++)
     {
         foreach (DataColumn dc in from.Value.Columns)
         {
             if (this.Value.Columns.Contains(dc.ColumnName) &&
                 this.Value.Columns[dc.ColumnName].MaxLength == dc.MaxLength &&
                 this.Value.Columns[dc.ColumnName].DataType == dc.DataType)
             {
                 this.SetNewRowValue(from[i, dc.ColumnName], dc.ColumnName);
             }
         }
         this.AddNewRow();
     }
 }
Ejemplo n.º 18
0
        /// <summary>
        /// 转化成标准类型
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        public static DataTableStd ParseStd(object o)
        {
            if (o == null)
            {
                return(null);
            }
            else if (o is DbDataReader)
            {
                var ddr = (DbDataReader)o;
                var rtn = new DataTableStd();

                if (!ddr.CanGetColumnSchema())
                {
                    for (var i = 0; i < ddr.FieldCount; i++)
                    {
                        rtn.AddColumn(new ColumnP()
                        {
                            ColumnName = ddr.GetName(i)
                        });
                    }

                    while (ddr.Read())
                    {
                        rtn.NewRow();
                        foreach (var col in rtn.schema)
                        {
                            var val = ddr[col.ColumnName];
                            rtn.SetNewRowValue(ConvertDBValue2Object(val), col.ColumnName);
                        }
                        rtn.AddNewRow();
                    }
                }
                else
                {
                    var cschema = ddr.GetColumnSchema();
                    for (int i = 0; i < ddr.FieldCount; i++)
                    {
                        rtn.AddColumn(new ColumnP()
                        {
                            ColumnName      = cschema[i].ColumnName,
                            DataType        = cschema[i].DataType.FullName,
                            IsAllowNull     = cschema[i].AllowDBNull == null ? false : cschema[i].AllowDBNull.Value,
                            IsAutoIncrement = cschema[i].IsAutoIncrement == null ? false : cschema[i].IsAutoIncrement.Value,
                            IsPK            = cschema[i].IsKey == null ? false : cschema[i].IsKey.Value,
                            Length          = cschema[i].ColumnSize == null ? -1 : cschema[i].ColumnSize.Value
                        });
                    }

                    while (ddr.Read())
                    {
                        rtn.NewRow();
                        foreach (var col in rtn.ColumnNames)
                        {
                            rtn.SetNewRowValue(ConvertDBValue2Object(ddr[col]), col);
                        }

                        rtn.AddNewRow();
                    }
                }


                return(rtn);
            }
            else if (o.GetType() != Type.GetType("System.Data.DataTable"))
            {
                return(null);
            }
            else if (o is DataTableStd)
            {
                return((DataTableStd)o);
            }
            else if (o is IEnumerable <object> )
            {
                var rtn  = new DataTableStd();
                var list = ((IEnumerable <object>)o).Select(d => (FrameDLRObject)FrameDLRObject.CreateInstance(d, Constants.FrameDLRFlags.SensitiveCase));
                if (list.Count() > 0)
                {
                    var first = list.First();
                    foreach (var item in first.Items)
                    {
                        rtn.AddColumn(new ColumnP()
                        {
                            ColumnName = item.Key
                        });
                    }
                    foreach (var item in list)
                    {
                        rtn.NewRow();
                        foreach (var key in item.Keys)
                        {
                            rtn.SetNewRowValue(item.GetValue(key), key);
                        }
                        rtn.AddNewRow();
                    }
                }
                return(rtn);
            }
            else
            {
                return(null);
            }
        }