我在这里的一个项目中使用了带有嵌套循环的 stringbuilder,我的 append 语句似乎只从我的一个列值中删除了第一个字符值。这是循环
For Each dr As System.Data.DataRow In gridData.Rows
I = X.CreateElement("I")
B.AppendChild(I)
Dim sb As New StringBuilder
sb.Append("|P|")
For Each dc As DataColumn In dr.Table.Columns
''for ticker value, since it's a link, we need to add a character to the beginning of the value otherwise, the 1st character in
''in the ticker gets truncated. This was recommended by the folks at Treegrid. Only for "link" type columns.
''Same goes for hhname. PD 11.11.2010
''Need to replace null values with space as it creates an issue on the UI with cerain browser versions in that the cell borders disappear.
''By placing in a blank space, it resolves any issues. Another recommendation by treegrid.
If dc.ColumnName.ToUpper = "VCHTICKER" OrElse dc.ColumnName.ToUpper = "VCHHHNAME" Or dc.ColumnName.ToUpper = "ACNTNUM" Or dc.ColumnName.ToUpper = "STATEMENTGROUP" Or dc.ColumnName.ToUpper = "VCHSSNUMBER" Or dc.ColumnName.ToUpper = "VCHLINKLABEL" Or dc.ColumnName.ToUpper = "CACCOUNTNUM" Or dc.ColumnName.ToUpper = "VCHSECURITY_SYMBOL" Then
If dc.ColumnName.ToUpper = "CACCOUNTNUM" Or dc.ColumnName.ToUpper = "VCHSECURITY_SYMBOL" Then
sb.Append(IIf(IsDBNull(dr.Item(dc.ColumnName)), "~ ", dr.Item(dc.ColumnName).ToString).ToString & "|")
Else
sb.Append(IIf(IsDBNull(dr.Item(dc.ColumnName)), "~ ", "~" & dr.Item(dc.ColumnName).ToString).ToString & "|")
End If
ElseIf dc.ColumnName.ToUpper = "GROUP1" Then
If ((dr.Item("IHHID").ToString.Length > 0) And (dr.Item("IHHID").ToString <> "0")) Then
sb.Append(IIf(IsDBNull(dr.Item(dc.ColumnName)), "~ ", "~" & dr.Item(dc.ColumnName).ToString).ToString & "|")
Else
sb.Append(NullConvert.ToString(dr.Item(dc.ColumnName)) & "|")
End If
Else
'sb.Append(IIf(IsDBNull(dr.Item(dc.ColumnName)), "~ ", dr.Item(dc.ColumnName)).ToString & "|")
sb.Append(NullConvert.ToString(dr.Item(dc.ColumnName)) & "|")
End If
Next dc
Dim XMLString As String = sb.ToString.Substring(0, sb.ToString.Length - 1)
Dim descText As XmlText = X.CreateTextNode(sb.ToString)
I.AppendChild(descText)
icount += 1
If icount > Constants.MAX_RECORDS Then
Exit For
End If
Next dr
我遇到的问题位于此处;
If dc.ColumnName.ToUpper = "CACCOUNTNUM" Or dc.ColumnName.ToUpper = "VCHSECURITY_SYMBOL" Then
sb.Append(IIf(IsDBNull(dr.Item(dc.ColumnName)), "~ ", dr.Item(dc.ColumnName).ToString).ToString & "|")
Else
sb.Append(IIf(IsDBNull(dr.Item(dc.ColumnName)), "~ ", "~" & dr.Item(dc.ColumnName).ToString).ToString & "|")
End If
而不是保存 dr.Item 的值,因为它应该像这样的“HSC01234”它保存为“SC01234”,结束空格和前导字符被删除。在这种情况下,这些值永远不会为 NULL,因此“~nbsp;” 不会被击中。任何帮助表示赞赏。谢谢你,尼克