Solved

looping thru gridview not acting as expected

Posted on 2009-05-05
3
277 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
  • 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

Secure Your Active Directory - April 20, 2017

Active Directory plays a critical role in your company’s IT infrastructure and keeping it secure in today’s hacker-infested world is a must.
Microsoft published 300+ pages of guidance, but who has the time, money, and resources to implement? Register now to find an easier way.

Question has a verified solution.

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

Suggested Solutions

Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
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…
In an interesting question (https://www.experts-exchange.com/questions/29008360/) here at Experts Exchange, a member asked how to split a single image into multiple images. The primary usage for this is to place many photographs on a flatbed scanner…

749 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