Пример #1
0
        internal List <DataListColumn> getTableColumns(string tableName)
        {
            List <DataListColumn> ret = new List <DataListColumn>();
            TableDef tableDef         = dbAdmin.getTableDef(tableName);
            int      i = 0;

            foreach (FieldDef field in tableDef.FieldDefs)
            {
                i++;
                if (i > DataSourceConst.MaxCol)
                {
                    break;
                }
                DataListColumn col = new DataListColumn();
                col.field = field.Name;

                col.title = field.Alias;
                if (string.IsNullOrEmpty(col.title))
                {
                    col.title = field.Name;
                }

                col.resizable = true;
                col.sortable  = true;
                ret.Add(col);
            }
            return(ret);
        }
Пример #2
0
        internal static List <FilterRule> getTableFilters(string name)
        {
            string[] ary    = name.Split(',');
            string   conn   = "";
            string   tbName = name;

            if (ary.Length > 1)
            {
                conn   = ary[0];
                tbName = ary[1];
            }

            DatabaseAdmin     dba   = DatabaseAdmin.getInstance(conn);
            TableDef          tbDef = dba.getTableDef(tbName);
            List <FilterRule> ret   = new List <FilterRule>();

            foreach (FieldDef fldDef in tbDef.FieldDefs)
            {
                FilterRule fr = new FilterRule();
                fr.field = fldDef.Name;
                ret.Add(fr);
            }

            return(ret);
        }
Пример #3
0
        public static EasyUiGridData  createGrid(string connName, string tableName)
        {
            DatabaseAdmin dba      = DatabaseAdmin.getInstance(connName);
            TableDef      tableDef = dba.getTableDef(tableName);
            string        title    = string.IsNullOrEmpty(tableDef.Title)?tableName:tableDef.Title;

            return(EUGridUtils.getGrid(connName, title, tableDef.FieldDefs));
        }
Пример #4
0
        public EasyUiGridData drillTableToGrid(List <string> parentMembers)
        {
            DatabaseAdmin  dba   = DatabaseAdmin.getInstance(table.connection);
            TableDef       tbf   = dba.getTableDef(table.name);
            string         title = string.IsNullOrEmpty(tbf.Title) ? table.name : tbf.Title;
            EasyUiGridData ret   = EUGridUtils.getGrid(table.connection, title, tbf.FieldDefs);

            return(ret);
        }
Пример #5
0
        public static string getPrimaryKey(string connName, string tableName)
        {
            if (string.IsNullOrEmpty(tableName))
            {
                return("");
            }
            DatabaseAdmin dba   = DatabaseAdmin.getInstance(connName);
            TableDef      tbDef = dba.getTableDef(tableName);

            return(tbDef.MainKeys[0].Name);
        }
Пример #6
0
        public static Dictionary <string, string> getFields(string connName, string tableName)
        {
            Dictionary <string, string> ret = new Dictionary <string, string>();

            if (string.IsNullOrEmpty(tableName))
            {
                return(ret);
            }
            DatabaseAdmin dba   = DatabaseAdmin.getInstance(connName);
            TableDef      tbDef = dba.getTableDef(tableName);

            ret.Add("", "");
            foreach (FieldDef field in tbDef.FieldDefs)
            {
                string title = string.IsNullOrEmpty(field.Title) ? field.Name : field.Title;
                ret.Add(field.Name, title);
            }
            return(ret);
        }
Пример #7
0
        private static void BuildFields(DataSourceSchema schema)
        {
            string connectionName = schema.ConnectionName;
            string selectSql      = schema.SelectCommand.CommandText;

            DatabaseAdmin dbAdmin = DatabaseAdmin.getInstance(connectionName);


            XSql xSql = new XSql(selectSql);

            string tableName = xSql.GetFrom();
            //  schema.Fields.Clear();

            SchemaList <FieldSchema> tmpfs = new SchemaList <FieldSchema>();

            DbConnection con = dbAdmin.Database.CreateConnection();

            try
            {
                DataTable netTable = new DataTable();

                DbDataAdapter da = dbAdmin.Database.GetDataAdapter();

                DbCommand cmd = con.CreateCommand();
                cmd.CommandText = selectSql;

                string[] paramNames = xSql.GetParamNames();
                for (int i = 0; i < paramNames.Count(); i++)
                {
                    string pName = paramNames[i];
                    if (!string.IsNullOrEmpty(pName))
                    {
                        pName = pName.Trim();
                    }
                    SqlParameter p = new SqlParameter();
                    p.ParameterName = "@" + pName;
                    //p.SourceColumn = pName;
                    p.Value = "";
                    cmd.Parameters.Add(p);
                }
                da.SelectCommand = cmd;

                da.Fill(netTable);
                //da.FillSchema(netTable, SchemaType.Source);

                foreach (DataColumn col in netTable.Columns)
                {
                    FieldSchema field = new FieldSchema();
                    field.Id          = col.ColumnName;
                    field.DisplayName = col.Caption;
                    //                    schema.Fields.Add(field);
                    if (schema.Fields.FindItem(field.Id) == null)
                    {
                        schema.Fields.Add(field);
                    }

                    if (tmpfs.FindItem(field.Id) == null)
                    {
                        tmpfs.Add(field);
                    }
                }


                //从原是表中获取,字段标题等信息;

                if (xSql.IsFromSourceTable(tableName))
                {
                    List <string> pks = dbAdmin.GetPrimaryKeys(tableName);
                    schema.KeyField = JsonConvert.SerializeObject(pks);
                    //if (pks.Count > 0)
                    //    keyfield = pks[0];
                    //if (!string.IsNullOrEmpty(keyfield))
                    //    schema.KeyField = keyfield;
                    var             tbName    = tableName.Trim('[', ']');
                    List <FieldDef> fieldDefs = dbAdmin.getTableDef(tbName).FieldDefs;

                    for (int i = 0; i < fieldDefs.Count; i++)
                    {
                        FieldDef    fieldDef = fieldDefs[i];
                        FieldSchema field    = schema.Fields.FindItem(fieldDef.Name);

                        //                    field.Id =;
                        if (field != null)
                        {
                            field.IsKey       = pks.Contains(field.Id);
                            field.DisplayName = fieldDef.Alias;//未用
                            if (string.IsNullOrEmpty(field.Title))
                            {
                                field.Title = fieldDef.Alias;
                            }
                            if (fieldDef.IsIdentity)
                            {
                                field.IsAutoInc = true;
                            }
                        }
                        //                    if (field == null)
                        //                        schema.Fields.Add(field);
                        //    if (tmpfs.FindItem(field.Id) == null)
                        //        tmpfs.Add(field);
                    }
                }

                //删除不存在的字段
                for (int i = schema.Fields.Count - 1; i >= 0; i--)
                {
                    FieldSchema fld    = schema.Fields[i];
                    FieldSchema newFld = tmpfs.FindItem(fld.Id);
                    if (newFld == null)
                    {
                        schema.Fields.Remove(fld);
                    }
                }
            }
            finally
            {
                con.Close();
            }
        }
Пример #8
0
        public static TableDef getTableDef(string connName, string tableName)
        {
            DatabaseAdmin da = DatabaseAdmin.getInstance(connName);

            return(da.getTableDef(tableName));
        }
Пример #9
0
        internal static DataSet getSourceDataSet(string dsName, string where, string orderBy, PaginationInfo pi)
        {
            if (string.IsNullOrEmpty(dsName))
            {
                throw new XException(Lang.DataSourceNameIsNull);
            }
            string connName  = "";
            string tableName = dsName;

            string[] namePath = dsName.Split('.');
            if (namePath.Length > 1)
            {
                connName  = namePath[0];
                tableName = namePath[1];
            }

            DatabaseAdmin dba = DatabaseAdmin.getInstance(connName);
            Database      db  = dba.Database;
            List <string> pks = dba.GetPrimaryKeys(tableName);
            DbCommand     cmd = null;

            if (!dba.ExistsSp(DataSourceConst.PaginationSpName))
            {
                dba.modifyProc(DataSourceConst.PaginationSpName, DataSourceConst.PaginationSpText);
            }

            if (pks.Count() == 1)
            {
                pi.isStoreProcessPagination = true;
                cmd             = db.GetStoredProcCommand(DataSourceConst.PaginationSpName);
                cmd.CommandType = CommandType.StoredProcedure;
                db.AddInParameter(cmd, "@TableName", DbType.String, tableName);
                db.AddInParameter(cmd, "@PrimaryKey", DbType.String, pks[0]);
                db.AddInParameter(cmd, "@PageNo", DbType.Int32, pi.page);
                db.AddInParameter(cmd, "@PageSize", DbType.Int32, pi.pageSize);
                db.AddInParameter(cmd, "@Where", DbType.String, where);
                db.AddOutParameter(cmd, "@PageCount", DbType.Int32, sizeof(Int32));
                db.AddOutParameter(cmd, "@Total", DbType.Int32, sizeof(Int32));
            }
            else
            {
                pi.isStoreProcessPagination = false;

                StringBuilder sbSql = new StringBuilder();
                sbSql.Append("Select * From ");
                sbSql.Append(tableName);
                if (!string.IsNullOrEmpty(where))
                {
                    sbSql.Append(" Where ");
                    sbSql.Append(where);
                }
                if (!string.IsNullOrEmpty(orderBy))
                {
                    sbSql.Append(" Order By ");
                    sbSql.Append(orderBy);
                }
                cmd = db.GetSqlStringCommand(sbSql.ToString());
            }

            DataSet   ds       = db.ExecuteDataSet(cmd);
            TableDef  tableDef = dba.getTableDef(tableName);
            DataTable table    = ds.Tables[0];

            foreach (FieldDef fieldDef in tableDef.FieldDefs)
            {
                if (string.IsNullOrEmpty(fieldDef.Alias))
                {
                    continue;
                }
                table.Columns[fieldDef.Name].Caption = fieldDef.Alias;
            }

            if (pi.isStoreProcessPagination)
            {
                pi.pageCount = (int)cmd.Parameters["@PageCount"].Value;
                pi.total     = (int)cmd.Parameters["@Total"].Value;
            }
            else
            {
                pi.total     = table.Rows.Count;
                pi.pageCount = pi.total / pi.pageSize;
                if (pi.total % pi.pageSize != 0)
                {
                    pi.pageCount++;
                }
            }
            return(ds);
        }