Archief - Remove Multiple Gridview Columns before Excel Export

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

AliChemicali

Legacy Member
Hello!

I'm trying to find a code to delete multiple columns because when you delete a column the next column takes his place so for example:

If you delete column 6 then column 7 becomes column six.

I tried the following code with an for loop & a while loop:

Dim field As DataControlField = gv.Columns(i)
gv.Columns.Remove(field)

&

gv.columns.removeat(i)

But same case that the column 7 becomes column 6

The variable removeColumns is an array with the column number that need to be deleted.
If wanted I can also provide the Header Names


Thanks a lot for anyone who can Help me!

Code:
Imports System.Data
Imports System.Configuration
Imports System.IO
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls


Public Class GridViewExportUtil
    Public Shared Sub Export(ByVal fileName As String, ByVal gv As GridView, ByVal removeColumns As Integer())
        HttpContext.Current.Response.Clear()
        HttpContext.Current.Response.AddHeader("content-disposition", String.Format("attachment; filename={0}", fileName))
        HttpContext.Current.Response.ContentType = "application/ms-excel"

'Gridview column delete code should come here


        Using sw As New StringWriter()
            Using htw As New HtmlTextWriter(sw)
                '  Create a form to contain the grid
                Dim table As New Table()

                '  add the header row to the table
                If gv.HeaderRow IsNot Nothing Then
                    GridViewExportUtil.PrepareControlForExport(gv.HeaderRow)
                    table.Rows.Add(gv.HeaderRow)
                End If

                '  add each of the data rows to the table
                For Each row As GridViewRow In gv.Rows
                    GridViewExportUtil.PrepareControlForExport(row)
                    table.Rows.Add(row)
                Next

                '  add the footer row to the table
                If gv.FooterRow IsNot Nothing Then
                    GridViewExportUtil.PrepareControlForExport(gv.FooterRow)
                    table.Rows.Add(gv.FooterRow)
                End If

                '  render the table into the htmlwriter
                table.RenderControl(htw)

                '  render the htmlwriter into the response
                HttpContext.Current.Response.Write(sw.ToString())
                HttpContext.Current.Response.[End]()
            End Using
        End Using
    End Sub

NeverwinterX

Legacy Member
Sorteer de array removeColumns van groot naar klein en loop dan van het begin naar het einde van de array en verwijder telkens de kolom met RemoveAt? Dan heb je geen last van het doorschuiven.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan