2013-02-12 44 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

相關問題