VB.net 使用 StringBuilder 避免不可见的 gridview 行

VB.net Avoid Non-Visible gridview rows with StringBuilder

但是我当前的 gridview 有各种隐藏行;当我将行复制到 csv 文件时,它会将隐藏的行显示为空行。但是,我试图通过行 If (DisplaySup.Rows(i).Visible = True) 来传递空行;空行仍然出现。有解决办法吗?

Protected Sub SheetSave_Click(sender As Object, e As EventArgs) Handles SheetSave.Click

    Response.Clear()
    Response.Buffer = True
    Response.AddHeader("content-disposition", "attachment;filename=gvtocsv.csv")
    Response.Charset = ""
    Response.ContentType = "application/text"
    Dim sBuilder As StringBuilder = New System.Text.StringBuilder()
    For index As Integer = 1 To DisplaySuppliers.Columns.Count - 1
        sBuilder.Append(DisplaySuppliers.Columns(index).HeaderText + ","c)
    Next
    sBuilder.Append(vbCr & vbLf)
    For i As Integer = 1 To DisplaySup.Rows.Count - 1
        For k As Integer = 1 To DisplaySup.HeaderRow.Cells.Count - 1
            If (DisplaySup.Rows(i).Visible = True) Then
                sBuilder.Append(DisplaySup.Rows(i).Cells(k).Text.Replace(",", "").Replace(" ", "") + ",")
            End If
        Next
        sBuilder.Append(vbCr & vbLf)
    Next

    Response.Output.Write(sBuilder.ToString())
    Response.Flush()
    Response.[End]()
End Sub

不管怎样,您都在添加换行符 - 您需要将其移到支票内!

示例:

For i As Integer = 1 To DisplaySup.Rows.Count - 1
    If (DisplaySup.Rows(i).Visible = True) Then
        For k As Integer = 1 To DisplaySup.HeaderRow.Cells.Count - 1                
            sBuilder.Append(DisplaySup.Rows(i).Cells(k).Text.Replace(",", "").Replace(" ", "") + ",")              
        Next
        sBuilder.Append(vbCr & vbLf)
    End If        
Next