简体   繁体   中英

Add headers VB.net/asp.net gridview?

I know this question was answered, in C# and I have been trying to convert and get it to work, but have not been succesful?

I would greatly appreciate if you helped

图片

this is an image from that question, i want to do something similar.

here is the link ASP.NET GridView second header row to span main header row

Dim d As Date = Date.Today
        d = d.AddDays(-1)
        Label1.Text = d

        'connects to datawarehouse
        saocmd1.Connection = conn1
        conn1.Open()

        Dim ds As New DataSet

        'selects sql query
        'saocmd1.CommandText = MYQUERY"
        saoda1.Fill(saods1, "salesasoftable")

        Dim row As New GridViewRow(0, -1, DataControlRowType.Header, DataControlRowState.Normal)

        Dim left As TableCell = New TableHeaderCell()
        left.ColumnSpan = 3
        row.Cells.Add(left)

        Dim totals As TableCell = New TableHeaderCell()
        totals.ColumnSpan = gridview1.Columns.Count - 3
        totals.Text = "Totals"
        row.Cells.Add(totals)

my error

Specified argument was out of the range of valid values.
Parameter name: index 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: index

Source Error: 


Line 54:        row.Cells.Add(totals)
Line 55: 
Line 56:        Dim t As Table = TryCast(gridview1.Controls(0), Table)
Line 57:        If t IsNot Nothing Then
Line 58:            t.Rows.AddAt(0, row)

The answer

Dim row As New GridViewRow(0, -1, DataControlRowType.Header, DataControlRowState.Normal)

'spanned cell that will span the columns I don't want to give the additional header 
Dim left As TableCell = New TableHeaderCell()
left.ColumnSpan = 6
row.Cells.Add(left)

'spanned cell that will span the columns i want to give the additional header
Dim totals As TableCell = New TableHeaderCell()
totals.ColumnSpan = myGridView.Columns.Count - 3
totals.Text = "Additional Header"
row.Cells.Add(totals)

'Add the new row to the gridview as the master header row
'A table is the only Control (index[0]) in a GridView
DirectCast(myGridView.Controls(0), Table).Rows.AddAt(0, row)

From your question, it just seems that you are having trouble converting c# to vb.net. Here are 2 online converters that can help out.

http://www.developerfusion.com/tools/convert/csharp-to-vb/

http://converter.telerik.com/

Or tangible software has a converter that can convert entire projects, but note that it is not free.

The simplest method is to handle this on the RowCreated event. You would test the RowType being handled, and if it is the header, you then:

  1. Clear the row cell(s) in question.
  2. Adjust the Rowspan of the first cell to 2 (in the case of your image: Qty Shipped).
  3. Remove the row cell immediately following (in the case of your image: Total Sales).
  4. Create a new table to look like the one you want as shown.
  5. Insert your new table into the row cell desired.

If you already have the solution you wish to use, but it's in C# and you can't convert it, try this tool: http://www.developerfusion.com/tools/convert/csharp-to-vb/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM