-
Jul 20th, 2013, 11:46 PM
#1
Thread Starter
Frenzied Member
DataGridView Columns
Can I please have some help with some code.
Code:
Private Sub SetupDataGridViewColumns(DataGridView As DataGridView)
Dim DataGridViewColumnCollection As New DataGridViewColumnCollection(DataGridView)
Dim DataGridViewColumn As New DataGridViewColumn
DataGridViewColumn.Name = "PersonID"
DataGridViewColumn.HeaderText = "PersonID"
DataGridViewColumnCollection.Add(DataGridViewColumn)
DataGridViewColumn.Name = "First Name"
DataGridViewColumn.HeaderText = "First Name"
DataGridViewColumnCollection.Add(DataGridViewColumn)
DataGridViewColumn.Name = "First Name"
DataGridViewColumn.HeaderText = "First Name"
DataGridViewColumnCollection.Add(DataGridViewColumn)
DataGridViewColumn.Name = "Last Name"
DataGridViewColumn.HeaderText = "Last Name"
DataGridViewColumnCollection.Add(DataGridViewColumn)
DataGridViewColumn.Name = "Address Line 1"
DataGridViewColumn.HeaderText = "Address Line 1"
DataGridViewColumnCollection.Add(DataGridViewColumn)
DataGridViewColumn.Name = "Address Line 2"
DataGridViewColumn.HeaderText = "Address Line 2"
DataGridViewColumnCollection.Add(DataGridViewColumn)
DataGridViewColumn.Name = "Address Line 3"
DataGridViewColumn.HeaderText = "Address Line 3"
DataGridViewColumnCollection.Add(DataGridViewColumn)
DataGridViewColumn.Name = "Mobile Phone"
DataGridViewColumn.HeaderText = "Mobile Phone"
DataGridViewColumnCollection.Add(DataGridViewColumn)
DataGridViewColumn.Name = "Home Phone"
DataGridViewColumn.HeaderText = "Home Phone"
DataGridViewColumnCollection.Add(DataGridViewColumn)
DataGridViewColumn.Name = "Date Modified"
DataGridViewColumn.HeaderText = "Date Modified"
DataGridViewColumnCollection.Add(DataGridViewColumn)
DataGridViewColumn.Name = "Person Category"
DataGridViewColumn.HeaderText = "Person Category"
DataGridViewColumnCollection.Add(DataGridViewColumn)
DataGridViewColumn.Name = "Comment"
DataGridViewColumn.HeaderText = "Comment"
DataGridViewColumnCollection.Add(DataGridViewColumn)
End Sub
I am getting the following error:
Specified argument was out of the range of valid values.
At line:
Code:
DataGridViewColumnCollection.Add(DataGridViewColumn)
I have had a look online, with no result.
-
Jul 21st, 2013, 12:12 AM
#2
Re: DataGridView Columns
Firstly, why are you creating a new DataGridViewColumnCollection when your DataGridView already has one, accessible via it's Columns property?
Secondly, DataGridViewColumn is a class so you can't just create one instance and then add it to a collection multiple times and expect the collection to contain multiple columns. If you want multiple columns then you have to create multiple columns.
Finally, you would never create an instance of the DataGridViewColumn class. It is really just a base class. If you want to display and optionally edit text in a DataGridView then you would use a DataGridViewTextBoxColumn.
So, with all that in mind, your code should look something like this:
vb.net Code:
Private Sub SetupDataGridViewColumns(grid As DataGridView) Dim columns = grid.Columns columns.Add("PersonID", "PersonID") columns.Add("First Name", "First Name") 'etc. End Sub
Note the rather better variable names too.
-
Jul 21st, 2013, 12:44 AM
#3
Thread Starter
Frenzied Member
Re: DataGridView Columns
How about for specifying the width for the column text? I had the same code as you above, but could not change the width, so I tried to add DataGridView items.... with no luck.
-
Jul 21st, 2013, 01:40 AM
#4
Re: DataGridView Columns
The overload of the Add method that I used above returns the index of the column just added, so you can use that to get the column and then configure it, e.g.
vb.net Code:
Private Sub SetupDataGridViewColumns(grid As DataGridView) Dim columns = grid.Columns columns(columns.Add("PersonID", "PersonID")).Width = 50 columns(columns.Add("First Name", "First Name")).Width = 100 'etc. End Sub
Alternatively, you can create a DataGridViewTextBoxColumn yourself, configure it and then add it, e.g.
vb.net Code:
Private Sub SetupDataGridViewColumns(grid As DataGridView) Dim columns = grid.Columns columns.Add(New DataGridViewTextBoxColumn With {.Name = "PersonID", .HeaderText = "PersonID", .Width = 50}) columns.Add(New DataGridViewTextBoxColumn With {.Name = "First Name", .HeaderText = "First Name", .Width = 100}) 'etc. End Sub
Actually, to make the code cleaner, I'd probably recommend breaking the addition of the column out into its own method:
vb.net Code:
Private Sub SetupDataGridViewColumns(grid As DataGridView) Dim columns = grid.Columns SetupDataGridViewColumn(columns, "PersonID", 50) SetupDataGridViewColumn(columns, "First Name", 100) 'etc. End Sub Private Sub SetupDataGridViewColumn(columns As DataGridViewColumnCollection, text As String, width As Integer) columns.Add(New DataGridViewTextBoxColumn With {.Name = text, .HeaderText = text, .Width = width}) 'etc. End Sub
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|