using System; using System.Collections.Generic; using System.Text; using System.Collections; using SysBaseLibs; using System.Data; using System.Web.UI.WebControls ; namespace SysDataLibs { public class rsDDTable { protected string _TableName = ""; public rsDDTable() { Initialize(); } public rsDDTable(string pcTableName,List poList) { _TableName = pcTableName; _ColumnList = poList; } public rsDDTable(string pcTableName, DBConnSql poDBConn) { _TableName = pcTableName; if (poDBConn != null && poDBConn.IsOpened) { _ColumnList = GetTableColsByTableName(pcTableName, poDBConn); } } public static List GetTableColsByTableName(string pcTableName, DBConnSql poDBConn) { List loRetVal = new List(); string lcSql = "select * from "+TableClass.Tn.Sys_TableColumns+" where TableId = '" + pcTableName + "' order by Sequence"; DataTable loTable = poDBConn.OpenDataTable(lcSql); if (loTable != null) { foreach (DataRow lodr in loTable.Rows) { rsDDColumn loColumn = new rsDDColumn(lodr); loColumn.SetDbConn(poDBConn); loRetVal.Add(loColumn); } } return loRetVal; } public string TableName { get { return _TableName; } } protected List _ColumnList = null; public List ColumnList { get { if (_ColumnList == null) _ColumnList = new List(); return _ColumnList; } } public List AvaiColumnList { get { List loRetVal = new List(); foreach (rsDDColumn column in ColumnList) { if (column.IsVisable) { loRetVal.Add(column); } } return loRetVal; } } public List GetUserAvaiColumnList(UserSession poUserSession) { List loRetVal = new List(); string lcUserColumn = GetUserDefaultCols(poUserSession); Array loArr = UtilStr.StrToArray(lcUserColumn); foreach (string column in loArr) { rsDDColumn loColumn = GetColumnByColumnId(column); if (loColumn != null) loRetVal.Add(loColumn); } return loRetVal; } public static Array GetArrayByString(string pcString, int piWidth) { Array loArr = UtilStr.StrToArray(pcString); int liAll = 0; piWidth = piWidth - 22; foreach (string lcWd in loArr) { int liWd = Convert.ToInt32(lcWd); liAll += liWd; } ArrayList loList = new ArrayList(); foreach (string lcWd in loArr) { int liWd = Convert.ToInt32(lcWd); loList.Add((piWidth * liWd) / liAll); } int liCount = 0; foreach (int liWd in loList) { liCount += liWd; } loList[loList.Count - 1] = Convert.ToInt32(loList[loList.Count - 1]) + (piWidth - liCount); Array array1 = Array.CreateInstance(typeof(int), loList.Count); loList.CopyTo(array1); return array1; } //public int GetColumnWith(UserSession poSession, rsDDColumn poColumn, int AllWidth) //{ // int liRetVal = 0; // return liRetVal; //} public string AllColumnsStr { get { string lcRetVal = ""; if (_ColumnList != null) { foreach (rsDDColumn loColumn in _ColumnList) { lcRetVal += (lcRetVal==""?"":",")+loColumn.ColumnId; } } return lcRetVal; } } /// /// 所有的非自动增长的字段 /// public virtual string VisiableColumns { get { string lcRetVal = ""; if (_ColumnList != null) { foreach (rsDDColumn loColumn in _ColumnList) { if (!loColumn.IsAuto) lcRetVal += (lcRetVal == ""?"":",") + loColumn.ColumnId; } } return lcRetVal; } } /// /// 所有的可见字段 /// public virtual string AvaiColumns { get { string lcRetVal = ""; if (_ColumnList != null) { foreach (rsDDColumn loColumn in _ColumnList) { if (loColumn.IsVisable) lcRetVal += (lcRetVal == ""?"":",") + loColumn.ColumnId; } } return lcRetVal; } } /// /// 所有的可见显示的字段名称 /// public virtual string DisplayColumns { get { string lcRetVal = ""; if (_ColumnList != null) { foreach (rsDDColumn loColumn in _ColumnList) { if (loColumn.IsVisable) lcRetVal += (lcRetVal == "" ? "" : ",") + loColumn.ColumnName; } } return lcRetVal; } } public rsQuery GetUserDefaultQuery(DBConnSql poDBConn, string pcUserId) { string lcSql = "select * from "+SysDataLibs.TableClass.Tn.Sys_UserDefaultColumns +" where TableId= '" + _TableName + "' and UserId= '" + pcUserId + "' order by Sequence "; return poDBConn.OpenQuery(lcSql); } /// /// 得到用户默认的显示字段的ID field1,field2 /// /// /// public string GetUserDefaultCols(UserSession poSession) { string lcRetVal = AvaiColumns; rsQuery loQuery = GetUserDefaultQuery(poSession.DBConn, poSession.UserInfo.UserID); if (loQuery != null && loQuery.IsOpened && loQuery.RecCount > 0) { lcRetVal = ""; loQuery.MoveFirst(); for (int i = 0; i < loQuery.RecCount; i++) { string lcColumnId = loQuery.GetString("ColumnId"); rsDDColumn loCol = GetColumnByColumnId(lcColumnId); if (loCol != null) { lcRetVal += (lcRetVal == "" ? "" : ",") + loCol.ColumnId.Trim(); } loQuery.MoveNext(); } } return lcRetVal; } /// /// 得到用户默认的显示字段的名称 name1,name2 /// /// /// public string GetUserDefaultColNames(UserSession poSession) { string lcRetVal = DisplayColumns; rsQuery loQuery = GetUserDefaultQuery(poSession.DBConn, poSession.UserInfo.UserID); if (loQuery != null && loQuery.IsOpened && loQuery.RecCount > 0) { lcRetVal = ""; loQuery.MoveFirst(); for (int i = 0; i < loQuery.RecCount; i++) { string lcColumnId = loQuery.GetString("ColumnId"); rsDDColumn loCol = GetColumnByColumnId(lcColumnId); if (loCol != null) { lcRetVal += (lcRetVal == "" ? "" : ",") + loCol.ColumnName.Trim(); } loQuery.MoveNext(); } } return lcRetVal; } /// /// 得到用户默认的显示字段的宽度 /// /// /// public string GetUserDefaultColWidths(UserSession poSession) { string lcRetVal = ColumnWidths; rsQuery loQuery = GetUserDefaultQuery(poSession.DBConn, poSession.UserInfo.UserID); if (loQuery != null && loQuery.IsOpened && loQuery.RecCount > 0) { lcRetVal = ""; loQuery.MoveFirst(); for (int i = 0; i < loQuery.RecCount; i++) { string lcColumnId = loQuery.GetString("ColumnId"); rsDDColumn loCol = GetColumnByColumnId(lcColumnId); if (loCol != null) { lcRetVal += (lcRetVal == "" ? "" : ",") + loCol.Width; } loQuery.MoveNext(); } } return lcRetVal; } public virtual string ColumnWidths { get { string lcRetVal = ""; if (_ColumnList != null) { foreach (rsDDColumn loColumn in _ColumnList) { if (loColumn.IsVisable) lcRetVal += (lcRetVal == "" ? "" : ",") + loColumn.Width; } } return lcRetVal; } } public rsDDColumn GetColumnByColumnId(string pcColumnId) { rsDDColumn loRetVal = null; if (_ColumnList != null) { foreach (rsDDColumn loColumn in _ColumnList) { if (UtilStr.UAndT(loColumn.ColumnId) == UtilStr.UAndT(pcColumnId)) { loRetVal = loColumn; break; } } } return loRetVal; } public void SetTableColumn(rsDDColumn poColumn) { if (_ColumnList == null) _ColumnList = new List(); if (IsEixst(poColumn)) _ColumnList.Add(poColumn); } private string _PrimaryKey = ""; public string PrimaryKeys { get { if (_PrimaryKey == "") { foreach (rsDDColumn loColumn in _ColumnList) { if (loColumn.IsPrimaryKey) _PrimaryKey += (_PrimaryKey == ""?"":"," )+ loColumn.ColumnId; } } return _PrimaryKey; } } public bool IsAutoGen { get { bool lbRetVal = false; foreach (rsDDColumn loColumn in _ColumnList) { if (loColumn.IsAuto) { lbRetVal = true; break; } } return lbRetVal; } } private bool IsEixst(rsDDColumn poColumn) { bool lbRetVal = false; if (_ColumnList != null&&poColumn!=null) { foreach (rsDDColumn loColumn in _ColumnList) { if (UtilStr.UAndT(loColumn.ColumnId) == UtilStr.UAndT(poColumn.ColumnId)) { lbRetVal = true; break; } } } return lbRetVal; } private string _InsertSql = ""; private string _UpdateSql = ""; private string _DeleteSql = ""; public string InsertSql { get { if (_InsertSql.Trim().Length == 0) CreateSqlStr(); return _InsertSql; } } public string UpdateSql { get { if (_UpdateSql.Trim().Length == 0) CreateSqlStr(); return _UpdateSql; } } public string DeleteSql { get { if (_DeleteSql.Trim().Length == 0) CreateSqlStr(); return _DeleteSql; } } private void CreateSqlStr() { string lcInsertFields = ""; string lcInsertValues = ""; string lcUpdateSet = ""; string lcWhere = ""; foreach (rsDDColumn loColumn in _ColumnList) { if (!loColumn.IsPrimaryKey) lcUpdateSet += (lcUpdateSet == "" ? "" : ",") + loColumn.ColumnId + "=" + "@" + loColumn.ColumnId; else lcWhere += (lcWhere == "" ? "" : " AND ") + loColumn.ColumnId + "=" + "@OOLLDD" + loColumn.ColumnId; if (!loColumn.IsAuto) { lcInsertFields += (lcInsertFields == "" ? "" : ",") + loColumn.ColumnId; lcInsertValues += (lcInsertValues == "" ? "" : ",") + "@" + loColumn.ColumnId; } } _InsertSql = "INSERT INTO " + this._TableName + " (" + lcInsertFields + ") VALUES (" + lcInsertValues + ")"; _UpdateSql = "UPDATE " + _TableName + " SET " + lcUpdateSet + " WHERE " + lcWhere; _DeleteSql = "DELETE FROM " + _TableName + " WHERE " + lcWhere; } public virtual void Initialize() { } } }