473,395 Members | 1,343 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,395 software developers and data experts.

displaying Array data in a Data Grid in VB.net

18
I'm trying to get an array to display in a data grid form in vb.net

The array has been imported from a csv, such that every array item is [date,time,flag] but I can split or join as needed to change the format of the array.

I want date, time, and flag to be seperate columns and each array item to be a new row.

I don't know where to start with this problem. I have looked through the msdn website and done some googling to no avail. If someone can point me to some better resources than I've been finding, it would be much appreciated.

Cheers
Mar 12 '08 #1
16 12253
saran23
28
I'm trying to get an array to display in a data grid form in vb.net

The array has been imported from a csv, such that every array item is [date,time,flag] but I can split or join as needed to change the format of the array.

I want date, time, and flag to be seperate columns and each array item to be a new row.

I don't know where to start with this problem. I have looked through the msdn website and done some googling to no avail. If someone can point me to some better resources than I've been finding, it would be much appreciated.

Cheers
Hi,
I have an idea to implement , Just try Im not sure this might be a correct solution,
here goes..
1.First create a datatable with rows and columns based on the array structure, 2.using a foreach loop, write the array items to this datatable,
3. Then bind this datatable to the gridview.

After trying this Let me know It works or not....

Thanks
Saran
Mar 12 '08 #2
crusson
18
Thanks.

My program is a notetaking program for surveying, so I'm trying to make it super robust. The array that is holding the data, reopens the text file each time it's going to do soemthing to it and restores it after every change it makes. Towards the robust attempt, I'm trying to avoid using a database for storage altogether. Perhaps if it's just an intermediary step, It's not such a big deal, but if I could go straight from an array into the data base, It would definitely save a step.
Mar 12 '08 #3
Plater
7,872 Expert 4TB
DataTable is an object in memory, no need for a database.
Mar 12 '08 #4
crusson
18
DataTable was the keyword. Thanks a bunch.
Mar 12 '08 #5
crusson
18
So using a DataTable will work,

In order to create a table with an unknown number of rows, I need to loop to create Row objects. How do I create objects in a loop such that each has a different name. Or am I missing something and there is a better way to create a bunch of rows?

my idea was soemthing along the lines of this...but &i doesn't work as i wished it did...
Expand|Select|Wrap|Line Numbers
  1. Private Sub Thisarray()
  2.         Dim table1 As DataTable
  3.         table1 = New DataTable("stuff")
  4.         Try
  5.             Dim colA As DataColumn = New DataColumn("a")
  6.             colA.DataType = System.Type.GetType("System.String")
  7.             table1.Columns.Add(colA)
  8.             Dim colB As DataColumn = New DataColumn("b")
  9.             colB.DataType = System.Type.GetType("System.String")
  10.             table1.Columns.Add(colB)
  11.             Dim colC As DataColumn = New DataColumn("c")
  12.             colC.DataType = System.Type.GetType("System.String")
  13.             table1.Columns.Add(colC)
  14.  
  15.  
  16.             Dim j As Integer
  17.             For j = 1 To 10
  18.                 Dim row&i As DataRow
  19.                 row&i = table1.NewRow()
  20.                 row&i.Item("a") = "a"
  21.                 row&i.Item("b") = "b"
  22.                 row&i.Item("c") = "c"
  23.                 table1.Rows.Add(row&i)
  24.             Next
  25.  
  26.         Catch
  27.         End Try
  28.  
  29.         Dim ds As New DataSet()
  30.         ds = New DataSet()
  31.         ds.Tables.Add(table1)
  32.         DataGrid1.SetDataBinding(ds, "letters")
  33.  
  34.     End Sub
  35.  
Mar 12 '08 #6
saran23
28
So using a DataTable will work,

In order to create a table with an unknown number of rows, I need to loop to create Row objects. How do I create objects in a loop such that each has a different name. Or am I missing something and there is a better way to create a bunch of rows?

my idea was soemthing along the lines of this...but &i doesn't work as i wished it did...

Private Sub Thisarray()
Dim table1 As DataTable
table1 = New DataTable("stuff")
Try
Dim colA As DataColumn = New DataColumn("a")
colA.DataType = System.Type.GetType("System.String")
table1.Columns.Add(colA)
Dim colB As DataColumn = New DataColumn("b")
colB.DataType = System.Type.GetType("System.String")
table1.Columns.Add(colB)
Dim colC As DataColumn = New DataColumn("c")
colC.DataType = System.Type.GetType("System.String")
table1.Columns.Add(colC)


Dim j As Integer
For j = 1 To 10
Dim row&i As DataRow
row&i = table1.NewRow()
row&i.Item("a") = "a"
row&i.Item("b") = "b"
row&i.Item("c") = "c"
table1.Rows.Add(row&i)
Next

Catch
End Try

Dim ds As New DataSet()
ds = New DataSet()
ds.Tables.Add(table1)
DataGrid1.SetDataBinding(ds, "letters")

End Sub
I suggest using the Datatable u created as the datasource for the grid.instead of using the dataset.

just try this

Expand|Select|Wrap|Line Numbers
  1. Datagrid.Datasource=Datatablename;
Mar 13 '08 #7
Plater
7,872 Expert 4TB
So using a DataTable will work,

In order to create a table with an unknown number of rows, I need to loop to create Row objects. How do I create objects in a loop such that each has a different name. Or am I missing something and there is a better way to create a bunch of rows?

my idea was soemthing along the lines of this...but &i doesn't work as i wished it did...
When it comes to that sort of thing, you don't NEED different names for them, the variable name you assign goes out of scope the next itteration through the loop.

Simply doing this should be fine:
Expand|Select|Wrap|Line Numbers
  1.  Dim j As Integer
  2.             For j = 1 To 10
  3.                 Dim row As DataRow
  4.                 row = table1.NewRow()
  5.                 row.Item("a") = "a"
  6.                 row.Item("b") = "b"
  7.                 row.Item("c") = "c"
  8.                 table1.Rows.Add(row)
  9.             Next
  10.  
Mar 13 '08 #8
crusson
18
So I am now able to display the DataGrid with all of my data.

I want to set individual column widths, but code such as:
colB.width = 100 does not work, i think maybe because I'm running vb.net 1.0?

I can set a datagridcolumnstyle, but how do i apply this to a column?

Expand|Select|Wrap|Line Numbers
  1. Dim styleA As DataGridColumnStyle
  2.             styleA.Width() = 1200
  3.  
Expand|Select|Wrap|Line Numbers
  1. Private Sub displayArray()
  2.  
  3.         arrayMasterLen = terrarray.getDisplayArrayLen()   
  4.  
  5.         Dim dataTable1 As DataTable
  6.         dataTable1 = New DataTable("LineLog")
  7.         Try
  8.             Dim colA As DataColumn = New DataColumn("Date/Time")
  9.             colA.DataType = System.Type.GetType("System.String")
  10.             dataTable1.Columns.Add(colA)
  11.             Dim colB As DataColumn = New DataColumn("Flag")
  12.             colB.DataType = System.Type.GetType("System.String")
  13.             dataTable1.Columns.Add(colB)
  14.             Dim colC As DataColumn = New DataColumn("Code")
  15.             colC.DataType = System.Type.GetType("System.String")
  16.             dataTable1.Columns.Add(colC)
  17.             Dim colD As DataColumn = New DataColumn("Comments")
  18.             colD.DataType = System.Type.GetType("System.String")
  19.             dataTable1.Columns.Add(colD)
  20.  
  21.             Dim j As Integer = 0
  22.             For j = 0 To arrayMasterLen - 1
  23.  
  24.                 Dim row As DataRow
  25.                 row = dataTable1.NewRow()
  26.                 row.Item("Date/Time") = terrarray.returnDateEntry(j)
  27.                 row.Item("Flag") = terrarray.returnFlag(j)
  28.                 row.Item("Code") = terrarray.returnCode(j)
  29.                 row.Item("Comments") = terrarray.returnComment(j)
  30.                 dataTable1.Rows.Add(row)
  31.             Next
  32.  
  33.         Catch
  34.         End Try
  35.  
  36.         DataGrid1.DataSource = dataTable1
  37.         DataGrid1.Refresh()
  38.  
  39.     End Sub
I also want to change the select method so that when I click anywhere in a row, the whole row becomes highlighted. Is this a simple property, or do I need to code this somehow?
Mar 13 '08 #9
Plater
7,872 Expert 4TB
Your datagrid columns should have a .style or DefaultCellStyle or something like that as a property already, you can change them withen there.
Mar 14 '08 #10
crusson
18
I moved on to different parts of the program hoping that when I came back to this problem I would magically think of a way to fix it...but I'm still having the same issues.

I am unable to size my columns to the width I want in the datagrid. I am able to resize all columns together, but not as seperate entities. I want column d to be really wide, but a,b,c can all be fairly small.

I am unable to figure this out. There is no .style or DefaultCellStyle that I can access to change individual Columns. Can anyone throw me a few hints here?

Expand|Select|Wrap|Line Numbers
  1.     Private Sub displayArray()
  2.         'displays the array in the data grid form
  3.  
  4.         arrayMasterLen = terrarray.getDisplayArrayLen()     'the number of rows to be displayed
  5.         ReDim arrayMaster(arrayMasterLen)                   'dim the array it's stored to
  6.         arrayMaster = terrarray.getDisplayArray()           'store the array
  7.  
  8.         Dim dataTable1 As DataTable                         'new data table
  9.         dataTable1 = New DataTable("LineLog")
  10.         Try
  11.             Dim colA As DataColumn = New DataColumn("Date/Time")
  12.             colA.DataType = System.Type.GetType("System.String")
  13.             dataTable1.Columns.Add(colA)
  14.  
  15.  
  16.             Dim colB As DataColumn = New DataColumn("Flag")
  17.             colB.DataType = System.Type.GetType("System.String")
  18.             dataTable1.Columns.Add(colB)
  19.             Dim colC As DataColumn = New DataColumn("Code")
  20.             colC.DataType = System.Type.GetType("System.String")
  21.             dataTable1.Columns.Add(colC)
  22.             Dim colD As DataColumn = New DataColumn("Comments")
  23.             colD.DataType = System.Type.GetType("System.String")
  24.             dataTable1.Columns.Add(colD)
  25.  
  26.  
  27.             Dim j As Integer = 0
  28.             For j = 0 To arrayMasterLen - 1
  29.                 Dim row As DataRow
  30.                 row = dataTable1.NewRow()
  31.                 row.Item("Date/Time") = terrarray.returnDateEntry(j)
  32.                 row.Item("Flag") = terrarray.returnFlag(j)
  33.                 row.Item("Code") = terrarray.returnCode(j)
  34.                 row.Item("Comments") = terrarray.returnComment(j)
  35.                 dataTable1.Rows.Add(row)
  36.             Next
  37.         Catch
  38.         End Try
  39.  
  40.         DataGrid1.PreferredColumnWidth() = 120
  41.         DataGrid1.DataSource = dataTable1
  42.         DataGrid1.RowHeadersVisible = True
  43.         DataGrid1.Name = "LineEntries"
  44.         DataGrid1.Refresh()
  45.  
  46.     End Sub
Mar 25 '08 #11
Plater
7,872 Expert 4TB
Hmm, while there does not seem to be any width parameter, all DataGridViewColumns have that style element I was talking about.
(There's two, one for the header cell and one for the regular cells)

There is also the auto-size mode, which might do what you want it to do?

Hmm, this IS a windows application right and not for a webapplication?
Mar 25 '08 #12
crusson
18
Thanks for replying. I feel like kind of a moron, but I'm still unable to figure this out. This is a windows app, not a web app. I think part of my problem is that I cannot figure out how to refer to the columns of the actual data grid. I can refer to columns of the data table, but cannot do anything with them width-wise. I think it may be that I'm applying a data table to be the data source of the data grid and cannot refer to those columns once they've been added to the data grid. Is there any way to refer to these columns in the datagrid?

I am able to set the preferred width of the datagrid (which applies to all columns in the table) but cannot find the auto-size mode you speak of. Should it appear in my properties window and doesn't? Or should I need to code it after adding the data to the datagrid. If it just automatically sizes every column to its widest width, that would be perfect.

Hmm, while there does not seem to be any width parameter, all DataGridViewColumns have that style element I was talking about.
(There's two, one for the header cell and one for the regular cells)

There is also the auto-size mode, which might do what you want it to do?

Hmm, this IS a windows application right and not for a webapplication?
Mar 25 '08 #13
Plater
7,872 Expert 4TB
Hmm you are using DataGrid object and not a DataGridView object then? That will be trickier then, I am unfamiliar with the vs2003 version of the object.
Mar 25 '08 #14
crusson
18
Yes, I am using a datagrid object, not a datagridview object. I've never used one of these objects before this project, so I have no real idea how they work. I know that generally they are used with databases instead of arrays. Would a database as an intermediary step be a necessary middleman?
Mar 25 '08 #15
Plater
7,872 Expert 4TB
If you are using a newer then VS2003, save yourself a lot of headache and switch to a DataGridView.
Mar 25 '08 #16
crusson
18
Sadly it appears that I'm using vs2001. I guess I need to try some completely different work-around...
Mar 25 '08 #17

Sign in to post your reply or Sign up for a free account.

Similar topics

1
by: Mike | last post by:
I'm creating a asp.net application in C#. (i'm new to this process). All the examples i see that are displaying data are using the DataGridControl. Can anyone point me to some examples that is...
7
by: C Newby | last post by:
I have a data grid control taht contains a data bound coulmn called "Type". Depending on the value of "Type" I want to display a corresponding image in the rendered table cell. So, if the value of...
1
by: Anthony | last post by:
I am defining the datagridtable style for a grid .... Dim coursekeycol As New DataGridTextBoxColumn coursekeycol.MappingName = COURSEKEYCOLNAME coursekeycol.HeaderText = "" coursekeycol.Width...
14
by: Susan Rice | last post by:
I want to create a readonly array of data, then a readonly array of a structure. This is data I access but I want it protected against accidental change. The following is my test code. #include...
4
by: daqmaneng | last post by:
does anyone have any suggestions for writing a two dimensional array of data to a file. Currently, I have an array of 5 columns, with 1000 elements per array. I know that I can use a for next...
15
by: Madhur | last post by:
Hi All, I would like you help me in creating an array of data types. I am interested in look at the the data type which looks like this Array...
3
by: makis | last post by:
hello, How can i send data from grid component to messagebox? which code or process we need?
0
blossam
by: blossam | last post by:
hi friends, i want to add data in grid at runtime means when i click enter or tab i want a new row in grid so i can add value in that i know how to do this in windows application but i want to...
5
by: billelev | last post by:
I have a large array of data (1000 x 40 x 3) that I am inserting into a database table. It is incredibly slow, and so I was wondering if there is a quicker way of inserting array data into a table....
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.