Solved

looping thru gridview not acting as expected

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

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

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

The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
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…
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…
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…

803 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