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
16 12253
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
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.
DataTable is an object in memory, no need for a database.
DataTable was the keyword. Thanks a bunch.
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
-
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 - Datagrid.Datasource=Datatablename;
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: -
Dim j As Integer
-
For j = 1 To 10
-
Dim row As DataRow
-
row = table1.NewRow()
-
row.Item("a") = "a"
-
row.Item("b") = "b"
-
row.Item("c") = "c"
-
table1.Rows.Add(row)
-
Next
-
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? -
Dim styleA As DataGridColumnStyle
-
styleA.Width() = 1200
-
-
Private Sub displayArray()
-
-
arrayMasterLen = terrarray.getDisplayArrayLen()
-
-
Dim dataTable1 As DataTable
-
dataTable1 = New DataTable("LineLog")
-
Try
-
Dim colA As DataColumn = New DataColumn("Date/Time")
-
colA.DataType = System.Type.GetType("System.String")
-
dataTable1.Columns.Add(colA)
-
Dim colB As DataColumn = New DataColumn("Flag")
-
colB.DataType = System.Type.GetType("System.String")
-
dataTable1.Columns.Add(colB)
-
Dim colC As DataColumn = New DataColumn("Code")
-
colC.DataType = System.Type.GetType("System.String")
-
dataTable1.Columns.Add(colC)
-
Dim colD As DataColumn = New DataColumn("Comments")
-
colD.DataType = System.Type.GetType("System.String")
-
dataTable1.Columns.Add(colD)
-
-
Dim j As Integer = 0
-
For j = 0 To arrayMasterLen - 1
-
-
Dim row As DataRow
-
row = dataTable1.NewRow()
-
row.Item("Date/Time") = terrarray.returnDateEntry(j)
-
row.Item("Flag") = terrarray.returnFlag(j)
-
row.Item("Code") = terrarray.returnCode(j)
-
row.Item("Comments") = terrarray.returnComment(j)
-
dataTable1.Rows.Add(row)
-
Next
-
-
Catch
-
End Try
-
-
DataGrid1.DataSource = dataTable1
-
DataGrid1.Refresh()
-
-
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?
Your datagrid columns should have a .style or DefaultCellStyle or something like that as a property already, you can change them withen there.
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? - Private Sub displayArray()
-
'displays the array in the data grid form
-
-
arrayMasterLen = terrarray.getDisplayArrayLen() 'the number of rows to be displayed
-
ReDim arrayMaster(arrayMasterLen) 'dim the array it's stored to
-
arrayMaster = terrarray.getDisplayArray() 'store the array
-
-
Dim dataTable1 As DataTable 'new data table
-
dataTable1 = New DataTable("LineLog")
-
Try
-
Dim colA As DataColumn = New DataColumn("Date/Time")
-
colA.DataType = System.Type.GetType("System.String")
-
dataTable1.Columns.Add(colA)
-
-
-
Dim colB As DataColumn = New DataColumn("Flag")
-
colB.DataType = System.Type.GetType("System.String")
-
dataTable1.Columns.Add(colB)
-
Dim colC As DataColumn = New DataColumn("Code")
-
colC.DataType = System.Type.GetType("System.String")
-
dataTable1.Columns.Add(colC)
-
Dim colD As DataColumn = New DataColumn("Comments")
-
colD.DataType = System.Type.GetType("System.String")
-
dataTable1.Columns.Add(colD)
-
-
-
Dim j As Integer = 0
-
For j = 0 To arrayMasterLen - 1
-
Dim row As DataRow
-
row = dataTable1.NewRow()
-
row.Item("Date/Time") = terrarray.returnDateEntry(j)
-
row.Item("Flag") = terrarray.returnFlag(j)
-
row.Item("Code") = terrarray.returnCode(j)
-
row.Item("Comments") = terrarray.returnComment(j)
-
dataTable1.Rows.Add(row)
-
Next
-
Catch
-
End Try
-
-
DataGrid1.PreferredColumnWidth() = 120
-
DataGrid1.DataSource = dataTable1
-
DataGrid1.RowHeadersVisible = True
-
DataGrid1.Name = "LineEntries"
-
DataGrid1.Refresh()
-
-
End Sub
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?
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?
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.
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?
If you are using a newer then VS2003, save yourself a lot of headache and switch to a DataGridView.
Sadly it appears that I'm using vs2001. I guess I need to try some completely different work-around...
Sign in to post your reply or Sign up for a free account.
Similar topics
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...
|
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...
|
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...
|
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...
|
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...
|
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...
|
by: makis |
last post by:
hello,
How can i send data from grid component to messagebox?
which code or process we need?
|
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...
|
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....
|
by: Charles Arthur |
last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
|
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...
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
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...
|
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...
|
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,...
|
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...
|
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...
|
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...
| |