1

私は次の手順を実行しますが、これは正常に機能します。私が問題を抱えている唯一の部分は、CompNamesリストに複数のレコードがある場合です。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を試しましたが、それも機能しません

4

1 に答える 1

2

WebForms アプリケーションを使用しているようです。HTML では、(特定のタグに埋め込まれていない限り) 空白は無視されるため、通常、改行は効果がありません。<br />改行を生成するために使用したい:

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

また、 1 回の呼び出しで配列全体を列挙するFor Eachため、ループは必要ありません。String.Joinの各 Name に対してこれを 1 回実行するのは冗長CompNamesです。

于 2013-02-12T13:40:32.953 に答える