Solved

looping thru gridview not acting as expected

Posted on 2009-05-05
3
278 Views
Last Modified: 2013-11-07
In vb.net/asp.net 2.0 I build this table from a gridview named gv:
(Code is simplified from actual)
Dim table1 As Table
Dim table2 As Table
 For Each grdItem As GridViewRow In gv.Rows
                        Dim row1 As New TableRow()
                        Dim cell1 As TableCell
                        cell1 = tbBPAddCell(row1, grdItem.Cells(0).Text, "center", "Style1", 4)
                        cell1 = tbBPAddCell(row1, grdItem.Cells(1).Text, "center", "Style1", 7, 2)
                        table1.Rows.Add(row1)
                        Me.Panel1.Controls.Add(table1)

                        Dim row2 As New TableRow()
                        Dim cell2 As TableCell
                        cell2= tbBPAddCell(row2, grdItem.Cells(2).Text, "center", "Style1", 4)
                        cell2= tbBPAddCell(row2, grdItem.Cells(3).Text, "center", "Style1", 7, 2)
                        table2.Rows.Add(row2)
                        Me.Panel1.Controls.Add(table1)
 Next

The problem lies in when the table built the first table is displayed as many times as there are rows and then the second table is displayed as many times as there are rows. Like this:
table1
table1
table2
table2

But! My goal is to display one table after another like this:
table1
table2
table1
table2

If the code worked like I thought it did I should get my desired results. I can't get it to work correctly with two separate tables. How can I loop thru this gridview to have my tables display one after another??? Please provide an example.
If it helps, here's the function called in the code snippit:
 
Public Function tbBPAddCell(ByVal row As TableRow, ByVal Contents As String, ByVal Align As String, ByVal CellType As String, ByVal ColSpan As Integer, Optional ByVal RSpan As Integer = 1, Optional ByVal Width As Integer = 0) As TableCell
        tbBPAddCell = New TableCell()
        tbBPAddCell.Font.Size = 9
        tbBPAddCell.Wrap = False
        tbBPAddCell.BorderColor = Drawing.Color.Black
        
        If CellType = "Style1" Then
            tbBPAddCell.Font.Size = 12
            tbBPAddCell.Wrap = True
            tbBPAddCell.ForeColor = Drawing.Color.Black
            tbBPAddCell.BorderStyle = BorderStyle.Solid
            tbBPAddCell.BorderColor = Drawing.Color.Black
            tbBPAddCell.BorderWidth = Unit.Pixel(1)
        End If
 
        tbBPAddCell.ColumnSpan = ColSpan
        tbBPAddCell.RowSpan = RSpan
        If Align = "left" Then
            tbBPAddCell.HorizontalAlign = HorizontalAlign.Left
        ElseIf Align = "center" Then
            tbBPAddCell.HorizontalAlign = HorizontalAlign.Center
        Else
            tbBPAddCell.HorizontalAlign = HorizontalAlign.Right
        End If
        tbBPAddCell.Text = Contents
        row.Cells.Add(tbBPAddCell)
    End Function

Open in new window

0
Comment
Question by:techpr0
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 20

Expert Comment

by:informaniac
ID: 24305991
I think a single table would suffice for you.

Instead of adding to two different tables table1 and table2. just keep on adding to table1

0
 

Author Comment

by:techpr0
ID: 24306172
Thanks for the feedback informaniac. That worked in testing but the two "real" tables are totally different and extremely long and being able to do two separate tables would save me a ton of work. That's the goal of this post.
0
 

Accepted Solution

by:
techpr0 earned 0 total points
ID: 24308512
Nevermind, it was obvious. If you add to the same table (by name) it's going to append to the table of the same name the next time it loops. I had to reinstanciate the table name each time by putting the table declaration within the for each loop.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
Parsing a CSV file is a task that we are confronted with regularly, and although there are a vast number of means to do this, as a newbie, the field can be confusing and the tools can seem complex. A simple solution to parsing a customized CSV fi…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

736 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question