HI,
I am created a window app for sending email to our user. I have created a html table in my program aand sending via email .
My html table email display correctly in browser but in Microsoft office outlook 2007 is display completely horrible.
Please see image attachment.
1. Display HTml table like this in Microsoft office outlook 2007
image[
^]
2. Display html table in web looking good.
image[
^]
Calling Both function
sb.Append(_clsManageConnection.CreateTableHeader(_ds, 1, 3, "", SkipColumn, false, false, inLineStyle, false, true, countHeader-1, tbodyStyle, true, blankHeaderText, true,SkipColumn.Length-1));
sb.Append(_clsManageConnection.BindDataIntoTable(_ds, "", SkipColumn, false, false, false, 0,false, 0, false, countHeader - 1, true, "", _htRowChange, "NodeType", RowMargeColumn,true,1));
Code for creating header
public string CreateTableHeader(DataSet _dtRecord, int databaseIndex, int totalHeader, string CheckColumn, string[] SkipColumn, bool isSerialNo, bool isBlankColumn, string inlineStyle, bool _isColumnRemove, bool _isHeaderBlank, int _headerBlankLength, string tbodyStyle, bool IsBlankHeaderNotRowSpan, string BlankHeaderText, bool IsPrintTextInBlank, int SubStractMargingHeaderRowCount)
{
if (databaseIndex > 1)
{
for (int i = 1; i < databaseIndex; i++)
{
_dtRecord.Tables.RemoveAt(0);
_dtRecord.AcceptChanges();
}
}
StringBuilder sbHeader = new StringBuilder();
bool isMultiLastColumn = false;
sbHeader.Append("<table width='1024px' border='1' id='excelTable" + databaseIndex + "' cellspacing='0' style='" + inlineStyle + "'>");
sbHeader.Append("<thead style='" + tbodyStyle + "font-family:verdana;font-size:8pt;'>");
ArrayList _arrColumnAddedList = new ArrayList();
bool _isSerialNumber = isSerialNo;
for (int _totalHeader = 0; _totalHeader < totalHeader; _totalHeader++)
{
string _serialNamePrint = string.Empty;
bool isSerialNamePrint = false;
if (_totalHeader == (totalHeader - 1) && _isSerialNumber)
{
_serialNamePrint = "No";
isSerialNamePrint = true;
}
if (isMultiLastColumn)
isMultiLastColumn = false;
if (_dtRecord.Tables[0].Columns.Count > 0)
{
sbHeader.Append("<tr style='" + tbodyStyle + "font-family:verdana;font-size:8pt;'>");
string previousCol = string.Empty;
int _totalCol = 0;
bool _isFirstRow = true, _isBlankColumn = isBlankColumn, _isSerialNo = isSerialNo;
string fontWeightStyle = string.Empty;
for (int headerCount = (_isSerialNo == true ? -1 : 0); headerCount < _dtRecord.Tables[0].Columns.Count; headerCount++)
{
if (_isSerialNo)
{
if (_totalHeader == (totalHeader - 1) && isSerialNamePrint == true && _isSerialNumber)
{
sbHeader.Append("<th style='background-color:#002060;color:white;font-family:verdana;font-size:8pt;'>" + _serialNamePrint + "</th>");
isSerialNamePrint = false;
}
else
sbHeader.Append("<th style='background-color:#002060;color:white;font-family:verdana;font-size:8pt;'></th>");
_isSerialNo = false;
continue;
}
if (_isBlankColumn == true && !SkipColumn.Contains(_dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim()))
{
if (_totalHeader == (totalHeader - 1) && _isBlankColumn && !_arrColumnAddedList.Contains(_dtRecord.Tables[0].Columns[headerCount].ColumnName))
{
sbHeader.Append("<th style='background-color:#002060;color:white;font-family:verdana;font-size:8pt;'>" + _dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim() + "</th>");
_arrColumnAddedList.Add(_dtRecord.Tables[0].Columns[headerCount].ColumnName);
}
else
sbHeader.Append("<th style='background-color:#002060;color:white;font-family:verdana;font-size:8pt;'></th>");
continue;
}
if (_dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim() == CheckColumn)
_isBlankColumn = false;
if (_isHeaderBlank && headerCount < _headerBlankLength)
{
if (!SkipColumn.Contains(_dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim()))
{
if (BlankHeaderText != string.Empty && headerCount == _headerBlankLength - 1)
{
sbHeader.Append("<th colspan='" + (_headerBlankLength - SubStractMargingHeaderRowCount) + "' style='font-size:8pt;background-color:#002060;color:white;font-family:verdana;text-align;left;'>" + BlankHeaderText + "</th>");
BlankHeaderText = string.Empty;
}
else if (IsPrintTextInBlank && BlankHeaderText == string.Empty)
{
if (!_arrColumnAddedList.Contains(_dtRecord.Tables[0].Columns[headerCount].ColumnName))
sbHeader.Append("<th style='font-size:8pt;background-color:#002060;color:white;font-weight:normal;font-family:verdana;'>" + _dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim() + "</th>");
else
sbHeader.Append("<th style='font-size:8pt;background-color:#002060;color:white;font-weight:normal;font-family:verdana;'></th>");
_arrColumnAddedList.Add(_dtRecord.Tables[0].Columns[headerCount].ColumnName);
}
else if (BlankHeaderText == string.Empty && !IsPrintTextInBlank)
sbHeader.Append("<th style='font-size:8pt;background-color:#002060;color:white;font-family:verdana;'></th>");
}
continue;
}
if (_isColumnRemove == true && SkipColumn.Contains(_dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim()))
continue;
if (!_dtRecord.Tables[0].Columns[headerCount].ColumnName.Contains("^") && _isBlankColumn == false && !SkipColumn.Contains(_dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim()))
{
if (isMultiLastColumn)
{
sbHeader.Append("<th colspan='" + _totalCol + "' style='font-size:8pt;background-color:#2E75B6;color:white;font-family:verdana;text-align:left;'>" + previousCol + "</th>");
isMultiLastColumn = false;
_totalCol = 0;
previousCol = string.Empty;
_isFirstRow = true;
}
if (totalHeader > 1)
{
if (_dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim() != CheckColumn && !_arrColumnAddedList.Contains(_dtRecord.Tables[0].Columns[headerCount].ColumnName))
{
sbHeader.Append("<th rowspan='" + totalHeader + "' style='font-size:8pt;background-color:#2E75B6;color:white;font-family:verdana;text-align:left;'>" + _dtRecord.Tables[0].Columns[headerCount].ColumnName + "</th>");
_arrColumnAddedList.Add(_dtRecord.Tables[0].Columns[headerCount].ColumnName);
}
}
else if (_dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim() != CheckColumn)
sbHeader.Append("<th style='font-size:8pt;background-color:#2E75B6;color:white;font-weight:normal;font-family:verdana;text-align:left;'>" + _dtRecord.Tables[0].Columns[headerCount].ColumnName + "</th>");
}
fontWeightStyle = string.Empty;
if (_dtRecord.Tables[0].Columns[headerCount].ColumnName.Contains("^"))
{
if (_totalHeader >=1)
{
fontWeightStyle = "font-weight:normal;";
}
char[] _char = new char[1];
_char[0] = '^';
string[] columns = _dtRecord.Tables[0].Columns[headerCount].ColumnName.Split(_char);
if (previousCol == (columns[_totalHeader] == "" ? columns[0] : columns[_totalHeader]))
{
_totalCol++;
}
else
{
if (!_isFirstRow)
{
sbHeader.Append("<th colspan='" + _totalCol + "' style='font-size:8pt;font-family:verdana;background-color:#2E75B6;color:white;" + fontWeightStyle + "'>" + (columns[_totalHeader] == "" ? columns[_totalHeader]: _dtRecord.Tables[0].Columns[headerCount-1].ColumnName.Split(_char)[_totalHeader]==""?"":previousCol) + "</th>");
}
_totalCol = 0;
previousCol = string.Empty;
}
if (previousCol == string.Empty)
{
previousCol = (columns[_totalHeader]==""?columns[0]:columns[_totalHeader]);
_totalCol++;
}
_isFirstRow = false;
isMultiLastColumn = true;
}
}
if (isMultiLastColumn)
{
if (_totalHeader >=1)
{
fontWeightStyle = "font-weight:normal;";
}
sbHeader.Append("<th colspan='" + _totalCol + "' style='font-size:8pt;font-family:verdana;background-color:#2E75B6;color:white;" + fontWeightStyle + "'>" + previousCol + "</th>");
isMultiLastColumn = false;
_totalCol = 0;
previousCol = string.Empty;
_isFirstRow = true;
}
sbHeader.Append("</tr>");
}
if (_totalHeader == totalHeader)
{
isBlankColumn = false;
}
}
sbHeader.Append("</thead>");
return sbHeader.ToString();
}
Code for creating body of html table
public string BindDataIntoTable(DataSet _dtRecord, string CheckColumn, string[] SkipColumn, bool isSerialNo, bool isBlankColumn, bool isGrouping, int totalGroupTable, bool isLastColumnHighlight, int totalLastColumnHighLight, bool isDisplayPercentage, int blankHeaderColumn, bool IsRowCellsMarge, string rowGroupingColumnName, Hashtable _htRowChange, string RowChangeColumnName, string[] rowGroupingColumnNameList, bool IsRowhighligth, int totalRowHighLight)
{
StringBuilder sbBody = new StringBuilder();
int _rowCount = 0, groupRowCount = 0, _totalCol = 0, _totalRow = 0, _rowCountForMarge = 0;
string rowGroupName = string.Empty, previousCol = string.Empty, previousRow = string.Empty;
bool _isFirstRow = true, isGroupRow = false, _isRowMarge = false, isNextRow = false;
ArrayList _arrSkipColumnList = new ArrayList();
int rowGroupCount = 0;
if (_dtRecord.Tables[0].Rows.Count > 0)
{
sbBody.Append("<tbody style='font-size:7pt;border:1px solid #0242A1;font-family:verdana;border-collapse: collapse;border-spacing: 0px;text-align:center;font-weight:normal;padding:3pt;'>");
for (int j = 0; j < _dtRecord.Tables[0].Rows.Count; j++)
{
_rowCount++;
if (!isGrouping)
{
if (isLastColumnHighlight && _rowCount > _dtRecord.Tables[0].Rows.Count - totalLastColumnHighLight)
sbBody.Append("<tr style='background-color:#2E75B6;color:white !important;font-weight:bold;font-family:verdana;'>");
else if (IsRowhighligth && _rowCount <= totalRowHighLight)
sbBody.Append("<tr style='background-color:#2E75B6;color:white !important;font-weight:bold;font-family:verdana;'>");
else if (_dtRecord.Tables[0].Rows[j][RowChangeColumnName].ToString() == "10" && _dtRecord.Tables[0].Rows[j]["FlgToHide"].ToString() != "1")
sbBody.Append("<tr style='background-color:#DFECF7;color:black !important;font-weight:normal;font-family:verdana;'>");
else if (_dtRecord.Tables[0].Rows[j][RowChangeColumnName].ToString() == "6")
sbBody.Append("<tr style='background-color:#ACCCEA;color:black !important;font-weight:normal;font-family:verdana;'>");
else if (_dtRecord.Tables[0].Rows[j][RowChangeColumnName].ToString() == "10" && _dtRecord.Tables[0].Rows[j]["FlgToHide"].ToString() == "1")
{
continue;
}
else
sbBody.Append("<tr>");
int rowSkip = 0, rowSkipCount = 0;
bool IsFirst = true;
bool isNextSpan = false;
int skipColumn = 0;
string textAlign = string.Empty;
for (int i = (isSerialNo == true ? -1 : 0); i < _dtRecord.Tables[0].Columns.Count; i++)
{
if (i < blankHeaderColumn)
{
textAlign = "text-align:left;";
}
else
textAlign = "text-align:right;padding-right:5px;";
if (isSerialNo)
{
sbBody.Append("<td nowrap>" + _rowCount + "</td>");
isSerialNo = false;
continue;
}
if (!SkipColumn.Contains(_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim()))
{
if (_arrSkipColumnList.Contains(_dtRecord.Tables[0].Rows[j][i].ToString().Trim()) && skipColumn < rowGroupingColumnNameList.Length && isNextRow)
{
if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == rowGroupingColumnNameList[0])
rowGroupCount++;
skipColumn++;
continue;
}
else
isNextRow = false;
if (IsRowCellsMarge && previousRow == string.Empty && rowGroupingColumnNameList.Contains(_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim()))
{
previousRow = _dtRecord.Tables[0].Rows[j][rowGroupingColumnNameList[rowGroupCount]].ToString().Trim();
if (rowGroupCount == 0)
_totalRow = _dtRecord.Tables[0].Select("[" + rowGroupingColumnNameList[rowGroupCount] + "]='" + previousRow + "'").Count();
else if (rowGroupingColumnNameList.Length > 1)
{
string colFilter = string.Empty;
for (int col = 0; col <= rowGroupCount; col++)
{
colFilter += "[" + rowGroupingColumnNameList[col] + "]='" + _dtRecord.Tables[0].Rows[j][rowGroupingColumnNameList[col]].ToString().Trim() + "' and ";
}
_totalRow = _dtRecord.Tables[0].Select(colFilter.Substring(0, colFilter.Length - 5)).Count();
}
_isRowMarge = true;
}
if (IsRowhighligth && _rowCount <= totalRowHighLight)
{
rowSkip = int.Parse(_htRowChange[_dtRecord.Tables[0].Rows[j][RowChangeColumnName].ToString()].ToString());
if (rowSkip > 0 && rowSkipCount <= rowSkip)
{
rowSkipCount++;
if (IsFirst)
{
sbBody.Append("<td style='color:white;" + textAlign + "' class='td' colspan='" + (rowSkip + 1) + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Contains("%") && _dtRecord.Tables[0].Rows[j][i].ToString().Trim() != string.Empty && isDisplayPercentage == true ? " %" : "") + "</td>");
IsFirst = false;
}
else
continue;
}
else
sbBody.Append("<td style='color:white;" + textAlign + "' class='td'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Contains("%") && _dtRecord.Tables[0].Rows[j][i].ToString().Trim() != string.Empty && isDisplayPercentage == true ? " %" : "") + "</td>");
}
else if (isLastColumnHighlight && _rowCount > _dtRecord.Tables[0].Rows.Count - totalLastColumnHighLight)
{
try
{
rowSkip = int.Parse(_htRowChange[_dtRecord.Tables[0].Rows[j][RowChangeColumnName].ToString()].ToString());
}
catch (Exception exrow)
{ }
if (rowSkip > 0 && rowSkipCount <= rowSkip)
{
rowSkipCount++;
if (IsFirst)
{
sbBody.Append("<td nowrap style='color:white;" + textAlign + "' class='td' colspan='" + (rowSkip + 1) + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Contains("%") && _dtRecord.Tables[0].Rows[j][i].ToString().Trim() != string.Empty && isDisplayPercentage == true ? " %" : "") + "</td>");
IsFirst = false;
}
else
continue;
}
else
sbBody.Append("<td nowrap style='color:white;" + textAlign + "' class='td'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Contains("%") && _dtRecord.Tables[0].Rows[j][i].ToString().Trim() != string.Empty && isDisplayPercentage == true ? " %" : "") + "</td>");
}
else
{
try
{
rowSkip = int.Parse(_htRowChange[_dtRecord.Tables[0].Rows[j][RowChangeColumnName].ToString()].ToString());
}
catch (Exception exRow)
{
}
if (rowSkip > 0 && rowSkipCount <= rowSkip)
{
rowSkipCount++;
if (IsFirst)
{
if (_dtRecord.Tables[0].Rows[j][RowChangeColumnName].ToString() == "10")
{
sbBody.Append("<td colspan='" + (rowSkip + 1) + "' nowrap style='" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Contains("%") && _dtRecord.Tables[0].Rows[j][i].ToString().Trim() != string.Empty && isDisplayPercentage == true ? " %" : "") + "</td>");
isNextSpan = true;
}
else
sbBody.Append("<td colspan='" + (rowSkip + 1) + "' nowrap style='" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Contains("%") && _dtRecord.Tables[0].Rows[j][i].ToString().Trim() != string.Empty && isDisplayPercentage == true ? " %" : "") + "</td>");
IsFirst = false;
}
else
continue;
}
else
{
if (IsRowCellsMarge && _isRowMarge)
{
if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == rowGroupingColumnNameList[rowGroupCount])
{
sbBody.Append("<td rowspan='" + _totalRow + "' align='center' valign='middle' style='vertical-align: middle;" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
_isRowMarge = false;
previousRow = string.Empty;
if (rowGroupCount == 0)
_arrSkipColumnList.Clear();
_arrSkipColumnList.Add(_dtRecord.Tables[0].Rows[j][i].ToString().Trim());
if (rowGroupCount + 1 != rowGroupingColumnNameList.Length)
rowGroupCount++;
}
else
sbBody.Append("<td align='center' style='" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
}
else
{
if (!_isRowMarge && IsRowCellsMarge && _dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == rowGroupingColumnNameList[rowGroupCount])
continue;
else
{
if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == "Route" && _dtRecord.Tables[0].Rows[j]["flgOnRoute"].ToString().Trim() == "0")
sbBody.Append("<td nowrap style='font-family:verdana;" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "<span style='color:red;font-size:7px;'>*</span></td>");
else
sbBody.Append("<td nowrap style='font-family:verdana;" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
}
}
}
}
}
}
sbBody.Append("</tr>");
{
previousRow = string.Empty;
_rowCountForMarge = 0;
_totalRow = 0;
isNextRow = true;
rowGroupCount = 0;
}
}
if (isGrouping)
{
if (previousCol == _dtRecord.Tables[0].Rows[j][CheckColumn].ToString())
_totalCol++;
else
{
if (!_isFirstRow)
{
isGroupRow = true;
rowGroupName = previousCol;
}
_totalCol = 0;
previousCol = string.Empty;
}
if (previousCol == string.Empty)
{
previousCol = _dtRecord.Tables[0].Rows[j][CheckColumn].ToString();
_totalCol++;
}
_isFirstRow = false;
if (IsRowCellsMarge && previousRow == string.Empty)
{
previousRow = _dtRecord.Tables[0].Rows[j][rowGroupingColumnName].ToString().Trim();
_totalRow = _dtRecord.Tables[0].Select("" + rowGroupingColumnName + "='" + previousRow + "'").Count();
_isRowMarge = true;
}
_rowCountForMarge++;
if (!isGroupRow)
{
sbBody.Append("<tr style='font-family:verdana;'>");
bool _isSerialNo = isSerialNo;
string textAlign = string.Empty;
for (int i = (_isSerialNo == true ? -1 : 0); i < _dtRecord.Tables[0].Columns.Count; i++)
{
if (i < 9)
textAlign = "text-align:left;";
else
textAlign = "text-align:right;padding-right:5px;";
if (_isSerialNo)
{
sbBody.Append("<td nowrap>" + _rowCount + "</td>");
_isSerialNo = false;
continue;
}
if (!SkipColumn.Contains(_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim()))
{
if (IsRowCellsMarge && _isRowMarge)
{
if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == rowGroupingColumnName)
{
sbBody.Append("<td rowspan='" + _totalRow + "' align='center' valign='middle' style='font-family:verdana;vertical-align: middle;text-align:left;'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
_isRowMarge = false;
}
else
sbBody.Append("<td style='text-align:left;'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
}
else
{
if (!_isRowMarge && IsRowCellsMarge && _dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == rowGroupingColumnName)
continue;
else
{
if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == "Route" && _dtRecord.Tables[0].Rows[j]["flgOnRoute"].ToString().Trim() == "0")
sbBody.Append("<td nowrap style='font-family:verdana;" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "<span style='color:red;font-size:7px;'>*</span></td>");
else
sbBody.Append("<td nowrap style='font-family:verdana;" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
}
}
}
}
sbBody.Append("</tr>");
if (_totalRow == _rowCountForMarge)
{
previousRow = string.Empty;
_rowCountForMarge = 0;
_totalRow = 0;
}
}
if (isGroupRow)
{
sbBody.Append("<tr style='background-color:#A6BDE1;color:black;font-weight:bold;font-family:verdana;'>");
DataRow[] drw = _dtRecord.Tables[1].Select("" + CheckColumn + "='" + rowGroupName + "'");
bool isMarge = false;
bool _isSerialNo = isSerialNo;
for (int i = (_isSerialNo == true ? -1 : 0); i < drw[0].ItemArray.Length; i++)
{
if (_isSerialNo)
{
sbBody.Append("<td nowrap></td>");
_isSerialNo = false;
continue;
}
if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() != CheckColumn && isMarge == false)
groupRowCount++;
else if (i > blankHeaderColumn)
sbBody.Append("<td nowrap style='color:black !important;font-family:verdana;text-align:right;padding-removed5px;'>" + drw[0][i].ToString().Trim() + "</td>");
}
sbBody.Append("</tr>");
sbBody.Append("<tr style='font-family:verdana;'>");
_isSerialNo = isSerialNo;
string textAlign = string.Empty;
for (int i = (_isSerialNo == true ? -1 : 0); i < _dtRecord.Tables[0].Columns.Count; i++)
{
if (i < 9)
textAlign = "text-align:left;";
else
textAlign = "text-align:right;padding-right:5px;";
if (_isSerialNo)
{
sbBody.Append("<td nowrap>" + _rowCount + "</td>");
_isSerialNo = false;
continue;
}
if (!SkipColumn.Contains(_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim()))
{
if (IsRowCellsMarge && _isRowMarge)
{
if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == rowGroupingColumnName)
{
sbBody.Append("<td rowspan='" + _totalRow + "' align='center' valign='middle' style='font-family:verdana;vertical-align: middle;text-align:left;'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
_isRowMarge = false;
}
else
sbBody.Append("<td style='font-family:verdana;text-align:left;'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
}
else
{
if (!_isRowMarge && IsRowCellsMarge && _dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == rowGroupingColumnName)
continue;
else
{
if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == "Route" && _dtRecord.Tables[0].Rows[j]["flgOnRoute"].ToString().Trim() == "0")
sbBody.Append("<td nowrap style='font-family:verdana;" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "<span style='color:red;font-size:7px;'>*</span></td>");
else
sbBody.Append("<td nowrap style='font-family:verdana;" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
}
}
};
}
isGroupRow = false;
sbBody.Append("</tr>");
if (_totalRow == _rowCountForMarge)
{
previousRow = string.Empty;
_rowCountForMarge = 0;
_totalRow = 0;
}
}
}
}
if (isGrouping)
{
if (_rowCount == _dtRecord.Tables[0].Rows.Count)
{
bool _isSerialNo = isSerialNo;
sbBody.Append("<tr style='background-color:#A6BDE1;color:black;font-weight:bold;font-family:verdana;'>");
DataRow[] drw = _dtRecord.Tables[1].Select("" + CheckColumn + "='" + previousCol + "'");
bool isMarge = false;
for (int i = (_isSerialNo == true ? -1 : 0); i < drw[0].ItemArray.Length; i++)
{
if (_isSerialNo)
{
sbBody.Append("<td nowrap></td>");
_isSerialNo = false;
continue;
}
if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() != CheckColumn && isMarge == false)
groupRowCount++;
else if (i > blankHeaderColumn)
sbBody.Append("<td nowrap style='color:black !important;font-family:verdana;text-align:right;padding-removed5px;'>" + drw[0][i].ToString().Trim() + "</td>");
}
sbBody.Append("</tr>");
isGroupRow = false;
}
if (_dtRecord.Tables[2].Rows.Count > 0)
{
sbBody.Append("<tr style='background-color:#507EC5;color:white;font-weight:bold;font-family:verdana;'>");
bool isMarge = false;
bool _isSerialNo = isSerialNo;
for (int i = (_isSerialNo == true ? -1 : 0); i < _dtRecord.Tables[2].Columns.Count; i++)
{
if (_isSerialNo)
{
groupRowCount++;
_isSerialNo = false;
continue;
}
if (_dtRecord.Tables[2].Columns[i].ColumnName.ToString().Trim() != CheckColumn && isMarge == false)
groupRowCount++;
else if (_dtRecord.Tables[2].Columns[i].ColumnName.ToString().Trim() == CheckColumn)
{
sbBody.Append("<td nowrap colspan='" + (groupRowCount != 0 ? groupRowCount : (blankHeaderColumn - 2)) + "' align='right' style='color:white; text-align:center;font-family:verdana;'>" + "Grand Total" + "</td>");
isMarge = true;
groupRowCount = 0;
}
else if (i > blankHeaderColumn)
sbBody.Append("<td nowrap style='color:white;font-family:verdana;text-align:right;padding-removed5px;'>" + _dtRecord.Tables[2].Rows[0][i].ToString().Trim() + "</td>");
}
sbBody.Append("</tr>");
}
}
sbBody.Append("</tbody>");
sbBody.Append("</table>");
}
return sbBody.ToString();
}
Please help me and provide a better solutions.
Thanks
What I have tried:
I am try to display actual html table in microsoft office outlook 2007. Please review also my code which is mention above.