/// <summary> /// Display DataSet content. /// </summary> /// <param name="ds">DataSet to display</param> private void DisplayDataSet(DataSet ds) { if (!DataHelper.DataSourceIsEmpty(ds)) { // Prepare list of tables string excludedTableNames = (ExcludedTableNames != null) ? ";" + ExcludedTableNames.Trim(';').ToLowerCSafe() + ";" : ""; SortedDictionary <string, string> tables = new SortedDictionary <string, string>(); foreach (DataTable dt in ds.Tables) { if (!DataHelper.DataSourceIsEmpty(dt)) { string tableName = dt.TableName; if (!excludedTableNames.Contains(";" + tableName.ToLowerCSafe() + ";")) { tables.Add(GetString("ObjectType." + tableName), tableName); } } } // Generate the tables foreach (string tableName in tables.Values) { DataTable dt = ds.Tables[tableName]; if (!DataHelper.DataSourceIsEmpty(dt)) { if (ds.Tables.Count > 1) { plcContent.Controls.Add(new LiteralControl(GetTableHeaderText(dt))); } Table contentTable = null; if (!ForceRowDisplayFormat && (dt.Columns.Count >= 6) && !dt.TableName.EqualsCSafe("ObjectTranslation", true)) { // Write all rows foreach (DataRow dr in dt.Rows) { contentTable = new Table(); SetTable(contentTable); // Set first table as table property if (Table == null) { Table = contentTable; } // Create table header TableCell labelCell = new TableHeaderCell(); labelCell.Text = GetString("General.FieldName"); TableCell valueCell = new TableHeaderCell(); valueCell.Text = GetString("General.Value"); AddRow(contentTable, labelCell, valueCell, null, "UniGridHead", false); // Add values bool even = false; foreach (DataColumn dc in dt.Columns) { string content = GetRowColumnContent(dr, dc, false); if (ShowAllFields || !String.IsNullOrEmpty(content)) { labelCell = new TableCell(); labelCell.Text = "<strong>" + dc.ColumnName + "</strong>"; valueCell = new TableCell(); valueCell.Text = content; AddRow(contentTable, labelCell, valueCell, null, null, even); even = !even; } } plcContent.Controls.Add(contentTable); plcContent.Controls.Add(new LiteralControl("<br />")); } } else { contentTable = new Table(); SetTable(contentTable); // Add header TableRow tr = new TableRow(); tr.CssClass = "UniGridHead"; int h = 1; foreach (DataColumn column in dt.Columns) { TableHeaderCell th = new TableHeaderCell(); th.Text = ValidationHelper.GetString(column.Caption, column.ColumnName); th.Style.Add(HtmlTextWriterStyle.WhiteSpace, "nowrap"); if (!ForceRowDisplayFormat && (h == dt.Columns.Count)) { th.Style.Add(HtmlTextWriterStyle.Width, "100%"); } tr.Cells.Add(th); h++; } contentTable.Rows.Add(tr); // Write all rows int i = 0; foreach (DataRow dr in dt.Rows) { ++i; tr = new TableRow(); tr.CssClass = ((i % 2) == 0) ? "OddRow" : "EvenRow"; // Add values foreach (DataColumn dc in dt.Columns) { TableCell tc = new TableCell(); object value = dr[dc.ColumnName]; // Possible DataTime columns if ((dc.DataType == typeof(DateTime)) && (value != DBNull.Value)) { DateTime dateTime = Convert.ToDateTime(value); CultureInfo cultureInfo = new CultureInfo(CMSContext.CurrentUser.PreferredUICultureCode); value = dateTime.ToString(cultureInfo); } string content = ValidationHelper.GetString(value, ""); tc.Text = EncodeDisplayedData ? HTMLHelper.HTMLEncode(content) : content; if (!ForceRowDisplayFormat) { tc.Style.Add(HtmlTextWriterStyle.WhiteSpace, "nowrap"); } tr.Cells.Add(tc); } contentTable.Rows.Add(tr); } plcContent.Controls.Add(contentTable); plcContent.Controls.Add(new LiteralControl("<br />")); } } } } else { Label lblError = new Label(); lblError.CssClass = "InfoLabel"; lblError.Text = GetString("general.nodatafound"); plcContent.Controls.Add(lblError); } }
/// <summary> /// Compare DataSets. /// </summary> /// <param name="ds">Original DataSet</param> /// <param name="compareDs">DataSet to compare</param> private void CompareDataSets(DataSet ds, DataSet compareDs) { Table = new Table(); SetTable(Table); Table.CssClass += " NoSideBorders"; // Ensure same tables in DataSets EnsureSameTables(ds, compareDs); EnsureSameTables(compareDs, ds); // Prepare list of tables SortedDictionary <string, string> tables = new SortedDictionary <string, string>(); foreach (DataTable dt in ds.Tables) { string excludedTableNames = (ExcludedTableNames != null) ? ";" + ExcludedTableNames.Trim(';').ToLowerCSafe() + ";" : ""; string tableName = dt.TableName; if (!DataHelper.DataSourceIsEmpty(ds.Tables[tableName]) || !DataHelper.DataSourceIsEmpty(CompareDataSet.Tables[tableName])) { if (!excludedTableNames.Contains(";" + tableName.ToLowerCSafe() + ";")) { tables.Add(GetString("ObjectType." + tableName), tableName); } } } // Generate the tables foreach (string tableName in tables.Values) { DataTable dt = ds.Tables[tableName].Copy(); DataTable dtCompare = CompareDataSet.Tables[tableName].Copy(); if (dt.PrimaryKey.Length <= 0) { continue; } // Add table heading if ((tables.Count > 1) || (ds.Tables.Count > 1)) { AddTableHeaderRow(Table, GetTableHeaderText(dt), ((Table.Rows.Count > 0) ? "TableSeparator " : "") + "NoSideBorders"); } while (dt.Rows.Count > 0 || dtCompare.Rows.Count > 0) { // Add table header row TableCell labelCell = new TableHeaderCell(); labelCell.Text = GetString("General.FieldName"); TableCell valueCell = new TableHeaderCell(); valueCell.Text = GetString("General.Value"); TableCell valueCompare = new TableHeaderCell(); valueCompare.Text = GetString("General.Value"); AddRow(Table, labelCell, valueCell, valueCompare, "UniGridHead", false); DataRow srcDr = null; DataRow dstDr = null; if ((tables.Count == 1) && (dt.Rows.Count == 1) && (dtCompare.Rows.Count == 1)) { srcDr = dt.Rows[0]; dstDr = dtCompare.Rows[0]; } else { if (!DataHelper.DataSourceIsEmpty(dt)) { srcDr = dt.Rows[0]; dstDr = dtCompare.Rows.Find(GetPrimaryColumnsValue(dt, srcDr)); } else { dstDr = dtCompare.Rows[0]; srcDr = dt.Rows.Find(GetPrimaryColumnsValue(dtCompare, dstDr)); } // If match not find, try to find in guid column if ((srcDr == null) || (dstDr == null)) { DataTable dtToSearch = null; DataRow drTocheck = null; if (srcDr == null) { dtToSearch = dt; drTocheck = dstDr; } else { dtToSearch = dtCompare; drTocheck = srcDr; } GeneralizedInfo infoObj = CMSObjectHelper.GetObject(drTocheck, dt.TableName.Replace("_", ".")); if ((infoObj != null) && ((infoObj.CodeNameColumn != TypeInfo.COLUMN_NAME_UNKNOWN) || (infoObj.GUIDColumn != TypeInfo.COLUMN_NAME_UNKNOWN))) { DataRow[] rows = dtToSearch.Select(infoObj.CodeNameColumn + "='" + drTocheck[infoObj.CodeNameColumn] + "'"); if (rows.Length > 0) { if (srcDr == null) { srcDr = rows[0]; } else { dstDr = rows[0]; } } else { rows = dtToSearch.Select(infoObj.GUIDColumn + "='" + drTocheck[infoObj.GUIDColumn] + "'"); if (rows.Length > 0) { if (srcDr == null) { srcDr = rows[0]; } else { dstDr = rows[0]; } } } } } } // Add values bool even = false; foreach (DataColumn dc in dt.Columns) { // Get content values string fieldContent = GetRowColumnContent(srcDr, dc, true); string fieldCompareContent = GetRowColumnContent(dstDr, dc, true); if (ShowAllFields || !String.IsNullOrEmpty(fieldContent) || !String.IsNullOrEmpty(fieldCompareContent)) { // Initialize comparators TextComparison comparefirst = new TextComparison(); comparefirst.SynchronizedScrolling = false; comparefirst.ComparisonMode = TextComparisonModeEnum.PlainTextWithoutFormating; comparefirst.EnsureHTMLLineEndings = true; TextComparison comparesecond = new TextComparison(); comparesecond.SynchronizedScrolling = false; comparesecond.RenderingMode = TextComparisonTypeEnum.DestinationText; comparesecond.EnsureHTMLLineEndings = true; comparefirst.PairedControl = comparesecond; // Set comparator content comparefirst.SourceText = fieldContent; comparefirst.DestinationText = fieldCompareContent; // Create set of cells labelCell = new TableCell(); labelCell.Text = "<strong>" + dc.ColumnName + "</strong>"; valueCell = new TableCell(); valueCell.Controls.Add(comparefirst); valueCompare = new TableCell(); valueCompare.Controls.Add(comparesecond); // Add comparison row AddRow(Table, labelCell, valueCell, valueCompare, null, even); even = !even; } } // Remove rows from tables if (srcDr != null) { dt.Rows.Remove(srcDr); } if (dstDr != null) { dtCompare.Rows.Remove(dstDr); } if (dt.Rows.Count > 0 || dtCompare.Rows.Count > 0) { TableCell emptyCell = new TableCell(); emptyCell.Text = " "; AddRow(Table, emptyCell, null, null, "TableSeparator", false); even = false; } } } plcContent.Controls.Add(Table); }
/// <summary> /// Display DataSet content. /// </summary> /// <param name="ds">DataSet to display</param> private void DisplayDataSet(DataSet ds) { if (!DataHelper.DataSourceIsEmpty(ds)) { // Prepare list of tables string excludedTableNames = (ExcludedTableNames != null) ? ";" + ExcludedTableNames.Trim(';').ToLowerCSafe() + ";" : ""; List <string> tables = new List <string>(); foreach (DataTable dt in ds.Tables) { if (!DataHelper.DataSourceIsEmpty(dt)) { string tableName = dt.TableName; if (!excludedTableNames.Contains(";" + tableName.ToLowerCSafe() + ";")) { tables.Add(tableName); } } } // Generate the tables ordered by object type display name foreach (string tableName in tables.OrderBy(x => GetString("ObjectType." + x))) { DataTable dt = ds.Tables[tableName]; if (!DataHelper.DataSourceIsEmpty(dt)) { if (ds.Tables.Count > 1) { plcContent.Controls.Add(new LiteralControl(GetTableHeaderText(dt))); } Table contentTable; if (!ForceRowDisplayFormat && (dt.Columns.Count >= 6) && !dt.TableName.EqualsCSafe(TranslationHelper.TRANSLATION_TABLE, true)) { // Write all rows foreach (DataRow dr in dt.Rows) { contentTable = new Table(); SetTable(contentTable); // Set first table as table property if (Table == null) { Table = contentTable; } // Create table header TableCell labelCell = new TableHeaderCell(); labelCell.Text = GetString("General.FieldName"); TableCell valueCell = new TableHeaderCell(); valueCell.Text = GetString("General.Value"); AddRow(contentTable, labelCell, valueCell, null, "unigrid-head", true); // Add values foreach (DataColumn dc in dt.Columns) { string content = GetRowColumnContent(dr, dc, false); if (ShowAllFields || !String.IsNullOrEmpty(content)) { labelCell = new TableCell(); labelCell.Text = "<strong>" + dc.ColumnName + "</strong>"; valueCell = new TableCell(); valueCell.Text = content; AddRow(contentTable, labelCell, valueCell, null); } } plcContent.Controls.Add(contentTable); plcContent.Controls.Add(new LiteralControl("<br />")); } } else { contentTable = new Table(); SetTable(contentTable); // Add header TableRow tr = new TableHeaderRow { TableSection = TableRowSection.TableHeader }; tr.CssClass = "unigrid-head"; int h = 1; foreach (DataColumn column in dt.Columns) { TableHeaderCell th = new TableHeaderCell(); th.Text = ValidationHelper.GetString(column.Caption, column.ColumnName); if (!ForceRowDisplayFormat && (h == dt.Columns.Count)) { th.CssClass = "main-column-100"; } tr.Cells.Add(th); h++; } contentTable.Rows.Add(tr); // Write all rows foreach (DataRow dr in dt.Rows) { tr = new TableRow(); // Add values foreach (DataColumn dc in dt.Columns) { TableCell tc = new TableCell(); object value = dr[dc.ColumnName]; // Possible DataTime columns if ((dc.DataType == typeof(DateTime)) && (value != DBNull.Value)) { DateTime dateTime = Convert.ToDateTime(value); CultureInfo cultureInfo = CultureHelper.GetCultureInfo(MembershipContext.AuthenticatedUser.PreferredUICultureCode); value = dateTime.ToString(cultureInfo); } string content = ValidationHelper.GetString(value, String.Empty); tc.Text = EncodeDisplayedData ? HTMLHelper.HTMLEncode(content) : content; if (!ForceRowDisplayFormat) { tc.Style.Add(HtmlTextWriterStyle.WhiteSpace, "nowrap"); } tr.Cells.Add(tc); } contentTable.Rows.Add(tr); } plcContent.Controls.Add(contentTable); plcContent.Controls.Add(new LiteralControl("<br />")); } } } } else { Label lblError = new Label(); lblError.CssClass = "InfoLabel"; lblError.Text = GetString("general.nodatafound"); plcContent.Controls.Add(lblError); } }