Public Function GenerateHtmlReport(ByVal ResultDataset As System.Data.DataSet) As String Implements IValidation.GenerateHtmlReport
Dim _StrBuil As New StringBuilder()
Dim clsHtmlBuilder As New HtmlBuilder()
Try
_StrBuil.AppendLine(Space(2) & clsHtmlBuilder.AddHr())
_StrBuil.AppendLine(Space(3) & clsHtmlBuilder.TextBig(ResultDataset.DataSetName))
_StrBuil.AppendLine(Space(5) & clsHtmlBuilder.AddLineBreak)
For Each _Tbl As DataTable In ResultDataset.Tables
If _Tbl Is Nothing OrElse _Tbl.Rows.Count = 0 Then Continue For
_StrBuil.AppendLine(Space(8) & clsHtmlBuilder.StartTable())
'set Table Header
'set Table Name
_StrBuil.AppendLine(Space(15) & clsHtmlBuilder.StartH4())
_StrBuil.AppendLine(Space(20) & _Tbl.TableName)
_StrBuil.AppendLine(Space(15) & clsHtmlBuilder.EndH4())
_StrBuil.AppendLine(Space(25) & clsHtmlBuilder.StartTableRow())
'set Column Name
For Each _col As DataColumn In _Tbl.Columns
_StrBuil.AppendLine(Space(35) & clsHtmlBuilder.StartTableHeader())
_StrBuil.AppendLine(Space(45) & _col.ColumnName)
_StrBuil.AppendLine(Space(35) & clsHtmlBuilder.EndTableHeader())
Next
_StrBuil.AppendLine(Space(25) & clsHtmlBuilder.EndTableRow())
'set Table Rows
For Each _dr As DataRow In _Tbl.Rows
_StrBuil.AppendLine(Space(25) & clsHtmlBuilder.StartTableRow())
For Each _col As DataColumn In _Tbl.Columns
If (Space(45) & _col.ColumnName = "Result") Then
_StrBuil.AppendLine(Space(35) & clsHtmlBuilder.StartTableCell())
Else
_StrBuil.AppendLine(Space(35) & clsHtmlBuilder.StartTableCell())
End If
_StrBuil.AppendLine(Space(45) & _dr(_col.ColumnName).ToString())
_StrBuil.AppendLine(Space(35) & clsHtmlBuilder.EndTableCell())
Next
_StrBuil.AppendLine(Space(25) & clsHtmlBuilder.EndTableRow())
Next
_StrBuil.AppendLine(Space(8) & clsHtmlBuilder.EndTable())
Next
_StrBuil.AppendLine(Space(5) & clsHtmlBuilder.AddLineBreak)
_StrBuil.AppendLine(Space(2) & clsHtmlBuilder.AddHr())
Catch ex As Exception
clsCommon.writeErrorLog("Error in Report Generation", "RuleSet2", "GenerateHtmlReport")
Throw ex
End Try
Return _StrBuil.ToString()
End Function
End Class
源代码:
<td nowrap = "nowrap">
4F0B52DC0001
</td>
<td nowrap = "nowrap">
C006411
</td>
<td nowrap = "nowrap">
Christiansen
</td>
<td nowrap = "nowrap">
Cathy
</td>
<td nowrap = "nowrap">
19570406
</td>
<td nowrap = "nowrap">
</td>
答案 0 :(得分:1)
你的意思是你想要以下内容吗?
<td nowrap = "nowrap">4F0B52DC0001</td>
<td nowrap = "nowrap">C006411</td>
<td nowrap = "nowrap">Christiansen</td>
<td nowrap = "nowrap">Cathy</td>
<td nowrap = "nowrap">19570406</td>
<td nowrap = "nowrap"></td>
试试这个:
For Each _col As DataColumn In _Tbl.Columns
If (Space(45) & _col.ColumnName = "Result") Then
_StrBuil.Append(Space(35) & clsHtmlBuilder.StartTableCell())
Else
_StrBuil.Append(Space(35) & clsHtmlBuilder.StartTableCell())
End If
_StrBuil.Append(_dr(_col.ColumnName).ToString())
_StrBuil.AppendLine(clsHtmlBuilder.EndTableCell())
Next
(使用Append代替AppendLine)
如果您尝试提出更清晰的问题,您可能会得到一个更相关的回答者。
修改强>
在回复您的注释时,您可以通过检查以确保“属性”值不为空或为空来消除最后一个(空)表格单元格之间的差距。导致您出现问题的代码行是:
_StrBuil.AppendLine(Space(45) & _dr(_col.ColumnName).ToString())
这将打印一行文本(末尾带有换行符),无论_dr(_col.ColumnName)
是否表示非空/非空值。如果if-block确保仅在_dr(_col.ColumnName)
不为空且不为空时执行,则包装此satement。您可以使用.Trim()
从值和String.IsNullOrEmpty()
中删除空格,以确保字符串表示非空值。
修改强>
有关详细信息,请参阅以下链接:
考虑一下你想要完成什么,然后把它写成一系列步骤(可能先在纸面上,然后在代码中)。如果你不能这样做,那么你就无法编程(提示:几乎任何人都可以编程)。