public static NgSubMenu2 AttachSubMenu(NgTable t) { var sIndex = 0; var fIndex = 0; var tabIndex = 0; var tabStr = ""; fIndex = 0; NgSubMenu2 s = new NgSubMenu2(t.Name); var cCount = t.Columns.Count; if (cCount > 10) { s.IsTabbed = true; } s.CreateThisForm = true; s.NumberOfRowsInPaging = 20; s.AllowAddNewFeature = true; s.AllowEditFeature = true; s.AllowMultiDelete = true; s.AllowDelete = true; s.DeleteFormMessage = "Are you sure you want to delete this row?"; s.DeleteFormTitle = "Delete"; s.DisplayName = s.Name; s.Menues = "Menu"; s.NetClassName = s.Name; foreach (var c in t.Columns) { if (s.IsTabbed == true) { if (fIndex % 10 == 0) { tabIndex++; tabStr = "Tab " + tabIndex.ToString(); s.Tabs.Add(tabStr); } } NgField2 f = new NgField2(); if (s.IsTabbed == true) { f.TabName = tabStr; } if (!CommonFunctions.IsDuplicateFileds(s, c.Name)) { fIndex++; f.Index = fIndex; f.DisplayName = c.Name; f.OriginalName = c.Name; f.Type = c.DataType; f.Length = c.Length; f.IsIdentity = c.IsAuto; f.IsPrimaryKey = c.IsPrimary; f.NetType = CommonFunctions.GetNetDataType(f.Type); if (f.IsIdentity) { f.ToDisplayInControls = false; } if (f.NetType == "DateTime") { f.ControlType = ControlType.DatePicker; } else { f.ControlType = ControlType.TextBox; } if (c.IsNullable == false) { f.IsValidationRequired = true; f.ErrorMessage = "Please enter the " + f.DisplayName; } if (c.IsAuto == true) { f.ToDisplayInControls = false; } else { f.ToDisplayInControls = true; } if (fIndex > 8) { f.ToDisplayInGrid = false; } else { f.ToDisplayInGrid = true; } s.Model.Fields.Add(f); } } sIndex++; s.Index = sIndex; return(s); }
public static List <NgTable> FetchDBSchema(string cstr) { List <NgTable> Tables = new List <NgTable>(); using (SqlConnection conn = new SqlConnection(cstr)) { conn.Open(); var qrTable = @"SELECT T.name AS Table_Name FROM sys.objects AS T WHERE T.type_desc = 'USER_TABLE' order by t.name"; var qr = @"SELECT T.name AS Table_Name , C.name AS Column_Name , P.name AS Data_Type , P.max_length AS Size , C.is_nullable as Nullable, C.is_identity as IdentityV FROM sys.objects AS T JOIN sys.columns AS C ON T.object_id = C.object_id JOIN sys.types AS P ON C.system_type_id = P.system_type_id WHERE T.type_desc = 'USER_TABLE' order by t.name,c.column_id"; var primaryQr = @"SELECT A.TABLE_NAME, A.CONSTRAINT_NAME, B.COLUMN_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS A, INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE B WHERE CONSTRAINT_TYPE = 'PRIMARY KEY' AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME ORDER BY A.TABLE_NAME"; var cmd = new SqlCommand(qrTable); cmd.Connection = conn; var rdr = cmd.ExecuteReader(); var tName = ""; NgTable tbl = new NgTable(); while (rdr.Read()) { tName = rdr["Table_Name"].ToString().Trim(); tbl = new NgTable(); tbl.Name = tName; if (tbl.Name != null && tbl.Name != "") { Tables.Add(tbl); } } rdr.Close(); cmd = new SqlCommand(qr); cmd.Connection = conn; var rdrFields = cmd.ExecuteReader(); while (rdrFields.Read()) { tName = rdrFields["Table_Name"].ToString().Trim(); tbl = GetTable(Tables, tName); NgColumn fld = new NgColumn(); fld.Name = rdrFields["Column_Name"].ToString().Trim(); fld.DataType = rdrFields["Data_Type"].ToString().Trim(); fld.Length = rdrFields["Size"].ToString().Trim(); if (rdrFields["IdentityV"].ToString().Trim().ToLower() == "true") { fld.IsAuto = true; } else { fld.IsAuto = false; } tbl.Columns.Add(fld); } rdrFields.Close(); cmd = new SqlCommand(primaryQr); cmd.Connection = conn; var rdrPrFields = cmd.ExecuteReader(); while (rdrPrFields.Read()) { tName = rdrPrFields["Table_Name"].ToString().Trim().ToLower(); var fldName = rdrPrFields["COLUMN_NAME"].ToString().Trim().ToLower(); foreach (var t in Tables) { if (t.Name.Trim().ToLower() == tName) { foreach (var f in t.Columns) { if (f.Name.ToLower().Trim() == fldName) { f.IsPrimary = true; } } } } } rdrPrFields.Close(); } return(Tables); }