2013-02-12 104 views
1

我有以下过程,它工作正常。我遇到问题的唯一部分是当CompNames列表有多条记录时。我正在尝试使用String.Join与vbCrLf但它不起作用。String.Join不能与vbCrLf一起使用

任何人有任何想法或替代我可以使用。

Public Sub gvTeamList_OnRowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) 
    Dim TeamID As Integer 

    If e.Row.RowType = DataControlRowType.DataRow Then 
     TeamID = DataBinder.Eval(e.Row.DataItem, "TeamID") 
     Dim sSQL As String 
     sSQL = "SELECT C.CompetitionName, CTT.TeamID " & _ 
       "FROM tblCompetition C " & _ 
       "left join tblCompetitionToTeam CTT on C.CompetitionID = CTT.CompetitionID " & _ 
       "left join tblTeam T on CTT.TeamID = T.TeamID " & _ 
       "where CTT.TeamID = " & TeamID 
     Dim dr = DataClass.GetDataReader(sSQL) 
     Dim bRows As Boolean = dr.HasRows 
     Dim CompNames As New List(Of String) 
     While dr.Read 
      CompNames.Add(dr("CompetitionName")) 
     End While 
     Dim Name As String 
     If CompNames.Count > 0 Then 
      For Each Name In CompNames 
       e.Row.Cells(5).Text = String.Join(vbCrLf, CompNames.ToArray) 
      Next 
     End If 
     'e.Row.Cells(5).Text = 
     e.Row.Cells(5).ForeColor = Drawing.Color.Yellow 
     e.Row.Cells(5).BackColor = Drawing.Color.DarkBlue 
     dr.Close() 
    End If 

End Sub 

我也曾尝试Environment.NewLine和不工作或者

+2

定义“不起作用”。 – Oded 2013-02-12 13:39:17

+0

您可以检查有关问题[here](http://www.dotnetperls.com/string-join) – spajce 2013-02-12 13:42:39

+0

看起来这是一个'WebForms'应用程序,所以我添加了标签。请尝试在您的代码中包含有关应用程序环境(Windows应用程序与网页)的信息,因为这是一个重要的区别。 – mellamokb 2013-02-12 13:44:29

回答

2

看来您正在使用的WebForms应用程序。在HTML中,行返回通常不起作用,因为空白被忽略(除非它嵌入到某些标记中)。你想用<br />生成一个换行符:

e.Row.Cells(5).Text = String.Join("<br />", CompNames.ToArray) 

而且,你不需要For Each循环,因为String.Join列举了一个调用整个数组。在CompNames中为每个名称运行一次是多余的。

+0

感谢您解答我的问题的答案。 – Clanger67 2013-02-12 14:22:28

相关问题