/// <summary> /// Writes the table content to the output. /// </summary> /// <param name="dt">Table to write</param> protected void WriteDataTable(DataTable dt) { pnlContent.Controls.Add(new LiteralControl("<h3>" + dt.TableName + "</h3>")); if (!DataHelper.DataSourceIsEmpty(dt)) { // Add literal for content LiteralControl ltlContent = new LiteralControl(); pnlContent.Controls.Add(ltlContent); // Add control for pager UniGridPager pagerElem = (UniGridPager)LoadControl("~/CMSAdminControls/UI/UniGrid/Controls/UniGridPager.ascx"); pagerElem.ID = dt.TableName + "_pager"; pagerElem.PageSizeOptions = "1,2,5,10,25,50,100,##ALL##"; if (dt.Columns.Count > 10) { pagerElem.DefaultPageSize = 1; } else if (dt.Columns.Count > 6) { pagerElem.DefaultPageSize = 2; } pnlContent.Controls.Add(pagerElem); // Add pager connector UniPagerConnector connectorElem = new UniPagerConnector(); connectorElem.PagerForceNumberOfResults = dt.Rows.Count; pagerElem.PagedControl = connectorElem; pnlContent.Controls.Add(connectorElem); tables.Add(new object[] { dt, ltlContent, pagerElem, connectorElem }); } }
protected void WriteTablesContent() { foreach (object[] table in tables) { // Prepare the components DataTable dt = (DataTable)table[0]; LiteralControl ltlContent = (LiteralControl)table[1]; UniGridPager pagerElem = (UniGridPager)table[2]; UniPagerConnector connectorElem = (UniPagerConnector)table[3]; // Handle the different types of direct page selector int currentPageSize = pagerElem.CurrentPageSize; if (currentPageSize > 0) { if ((float)connectorElem.PagerForceNumberOfResults / (float)currentPageSize > 20.0f) { pagerElem.DirectPageControlID = "txtPage"; } else { pagerElem.DirectPageControlID = "drpPage"; } } // Bind the pager first connectorElem.RaiseOnPageBinding(null, null); // Prepare the string builder StringBuilder sb = new StringBuilder(); // Prepare the indexes for paging int pageSize = pagerElem.CurrentPageSize; int startIndex = (pagerElem.CurrentPage - 1) * pageSize + 1; int endIndex = startIndex + pageSize; // Process all items int index = 0; bool all = (endIndex <= startIndex); if (dt.Columns.Count > 6) { // Write all rows foreach (DataRow dr in dt.Rows) { index++; if (all || (index >= startIndex) && (index < endIndex)) { sb.Append("<table class=\"UniGridGrid\" cellspacing=\"0\" cellpadding=\"3\" rules=\"rows\" border=\"1\" style=\"border-collapse:collapse;\" width=\"100%\">"); // Add header sb.Append("<tr class=\"UniGridHead\"><th>" + GetString("General.FieldName") + "</th><th style=\"width: 100%;\">" + GetString("General.Value") + "</th></tr>"); // Add values int i = 0; foreach (DataColumn dc in dt.Columns) { object value = dr[dc.ColumnName]; // Binary columns string content = null; if ((dc.DataType == typeof(byte[])) && (value != DBNull.Value)) { byte[] data = (byte[])value; content = "<" + GetString("General.BinaryData") + ", " + DataHelper.GetSizeString(data.Length) + ">"; } else { content = ValidationHelper.GetString(value, ""); } if (!String.IsNullOrEmpty(content)) { ++i; string className = ((i % 2) == 0) ? "OddRow" : "EvenRow"; sb.Append("<tr class=\"" + className + "\"><td>"); sb.Append("<strong>" + dc.ColumnName + "</strong>"); sb.Append("</td><td style=\"width: 100%;\">"); // Possible DataTime columns if ((dc.DataType == typeof(DateTime)) && (value != DBNull.Value)) { DateTime dateTime = Convert.ToDateTime(content); System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo(CMSContext.CurrentUser.PreferredUICultureCode); content = dateTime.ToString(cultureInfo); } // Process content ProcessContent(sb, dr, dc.ColumnName, ref content); sb.Append("</td></tr>"); } } sb.Append("</table>\n"); } } } else { sb.Append("<table class=\"UniGridGrid\" cellspacing=\"0\" cellpadding=\"3\" rules=\"rows\" border=\"1\" style=\"border-collapse:collapse;\" width=\"100%\">"); // Add header sb.Append("<tr class=\"UniGridHead\">"); int h = 1; foreach (DataColumn column in dt.Columns) { string style = null; if (h == dt.Columns.Count) { style = "style=\"width:100%;\""; } sb.Append("<th " + style + " >" + column.ColumnName + "</th>"); h++; } sb.Append("</tr>"); // Write all rows foreach (DataRow dr in dt.Rows) { index++; if (all || (index >= startIndex) && (index < endIndex)) { string className = ((index % 2) == 0) ? "OddRow" : "EvenRow"; sb.Append("<tr class=\""); sb.Append(className); sb.Append("\">"); // Add values foreach (DataColumn dc in dt.Columns) { object value = dr[dc.ColumnName]; // Possible DataTime columns if ((dc.DataType == typeof(DateTime)) && (value != DBNull.Value)) { DateTime dateTime = Convert.ToDateTime(value); System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo(CMSContext.CurrentUser.PreferredUICultureCode); value = dateTime.ToString(cultureInfo); } string content = ValidationHelper.GetString(value, ""); content = HTMLHelper.HTMLEncode(content); string cellStyle = null; if (content.Length < 100) { cellStyle = " style=\"white-space:nowrap;\""; } sb.Append("<td" + cellStyle + ">" + content + "</td>"); } sb.Append("</tr>"); } } sb.Append("</table>\n"); } ltlContent.Text = sb.ToString(); } }