Solved

VB express 2008. appears handicaped in dealing with grids.

Posted on 2009-05-13
5
247 Views
Last Modified: 2013-12-26
I am having problems getting this information from MS helpers maybe someone here can give me a boost in the right direction.  The application has a function which receives data over a serial port, I want to display the incomming data within a grid, but looking a the toolbox I only see the vb 2008 express datagridviewer control listed.  Since this data is in memory I would like to populate the datagriidviewer one row at a time.  Sounds easy and should be, but the new required codes do not seem to have a method with which I can control where in the grid to place data, namely column and rows. I have seven columns to display for each row.
Something like below should work, but the compiler will not allow this technique.
Any suggestions will be appreciated.  Could it be the express version is cut off at the knees?


FirstGrid = False

        Dim newrow As DataGridView.DataGridViewControlCollection

        newrow.Item

        RowCount = RowCount + 1

        DataGridView1.NewRowIndex

        With DataGridView1

            .CurrentRow = RowCount

            .currentcol = 1

            .CurrentCell = srf

            .currentcol = 2

            .CurrentCell = scol

            .currentcol = 3

            .CurrentCell = srow

            .currentcol = 4

            .CurrentCell = stxt

            .currentcol = 5

            .CurrentCell = asts

            .currentcol = 6

            .CurrentCell = initalarm

            .currentcol = 7

            .CurrentCell = desc
 

        End With

Open in new window

0
Comment
Question by:Jimmyjay21
  • 3
  • 2
5 Comments
 
LVL 85

Expert Comment

by:Mike Tomlinson
ID: 24379969
So you want to be able to specify a Row/Col and place a value there?

This simple examples make a DataTable with 7 columns and 10 rows, then proceeds to fill it up:
Public Class Form1
 

    Private DT As New DataTable()
 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        For i As Integer = 1 To 7

            DT.Columns.Add("Column" & i)

        Next

        For i As Integer = 1 To 10

            DT.Rows.Add(DT.NewRow)

        Next

        DataGridView1.DataSource = DT

    End Sub
 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        For C As Integer = 1 To DT.Columns.Count

            For R As Integer = 1 To DT.Rows.Count

                DT(R - 1)(C - 1) = "R" & R & "C" & C

            Next

        Next

    End Sub
 

End Class

Open in new window

DataGridViewExample.jpg
0
 

Author Comment

by:Jimmyjay21
ID: 24380150
That's good, and safe, however I need to add several thousand records over a period of 24 hours.
This method will require me to refresh the list evertime a record arrives. I was hoping there might me a method in which I could manually add each record to the grid, bypassing the need to refresh every time a record is received.
I can do this with the list box, however it looks tackey, an organized grid ioffers a much better view.
If not possible I will just have to live with the listbox.
0
 

Author Comment

by:Jimmyjay21
ID: 24380174
Comment was given in previous response.  The solution offered certainly will work and worth the points, before closing I would like to see if the manual process to creating this grid list is possible with VB 2008 express.
Thanks,
0
 
LVL 85

Accepted Solution

by:
Mike Tomlinson earned 500 total points
ID: 24380182
What do you mean by "refresh" it everytime...that was merely an example of showing how you can modify a specific row/col...IF IT ALREADY EXISTS.   =)

You can add a NEW row (at any time) to the DATATABLE and it will automatically appear in the DataGridView:



Public Class Form1
 

    Private DT As New DataTable()
 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        For i As Integer = 1 To 7

            DT.Columns.Add("Column" & i)

        Next

        DataGridView1.DataSource = DT

    End Sub
 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        ' ...in response to SOME event...

        Dim dr As DataRow = DT.NewRow

        dr(0) = "Idle"

        dr(1) = "Mind"

        dr(2) = "was"

        dr(3) = "here"

        dr(4) = "with a"

        dr(5) = "datatable/datagrid"

        dr(6) = "example"

        DT.Rows.Add(dr)

    End Sub
 

End Class

Open in new window

0
 

Author Comment

by:Jimmyjay21
ID: 24380974
Whops, that process is what I want to avoid, adding the records to a table is a given, already being done.  Ok I want to move forward with this I will get back ASAP ; but if I am reading this correctly you are saying I only need to add the record to the table and the item will then display without a refresh, I think a refresh will be needed, I'll test to determine what will work.
Thanks.
0

Featured Post

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

Introduction While answering a recent question (http://www.experts-exchange.com/Q_27402310.html) in the VB classic zone, I wrote some VB code in the (Office) VBA environment, rather than fire up my older PC.  I didn't post completely correct code o…
If you have ever used Microsoft Word then you know that it has a good spell checker and it may have occurred to you that the ability to check spelling might be a nice piece of functionality to add to certain applications of yours. Well the code that…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

708 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

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now