删除源代码中td之间的中断行

时间:2012-09-10 17:15:32

标签: vb.net visual-studio-2010

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>

1 个答案:

答案 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()中删除空格,以确保字符串表示非空值。


修改
有关详细信息,请参阅以下链接:

考虑一下你想要完成什么,然后把它写成一系列步骤(可能先在纸面上,然后在代码中)。如果你不能这样做,那么你就无法编程(提示:几乎任何人都可以编程)。