Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 4648
  • Last Modified:

Bind DataGridView to ArrayList

I am trying to do something simple here...

I have a class..

    Public Class queryAttribute
        Public ccDisplayName As String = ""
        Public ccQueryType As Integer
        Public ccQueryValue As String = ""
    End Class

Then there is an arraylist of this class

dim myList as ArrayList

I call myList.add for a number of items and I can verify they are there.

Then I try to set the datasource of the datagridview gvAttributes to be myList

so gvAttributes.Datasource = myList

When I initialize the app I do this..

With gvAttributes
                .AutoGenerateColumns = False
                .ColumnHeadersVisible = False
                .Columns.Add("Type", "Type")
                .Columns.Add("Value", "Value")
                Dim colBmp As New Bitmap(Application.StartupPath & "\resources\delete.gif")
                Dim colImg As Image
                colImg = colBmp

                Dim col As New DataGridViewImageColumn
                col.Image = colImg
                .Columns.Add(col)
            End With

Then when the content of the arraylist is changed I do this..

                With gvAttributes
                    '.AutoGenerateColumns = True
                    .ColumnHeadersVisible = True
                    .Columns(0).DataPropertyName = "ccDisplayName"
                    .Columns(1).DataPropertyName = "ccQueryValue"
                End With
                gvAttributes.DataSource = myList

Can someone please tell me why I dont have rows in my grid? I can see when I look at the properties of the grid in "watch" that the datasource has rows.. why are they not showing up here?

Please advise.
0
NTGuru705
Asked:
NTGuru705
  • 4
  • 4
1 Solution
 
NTGuru705Author Commented:
any thoughts to help a poor soul here?
0
 
sm394Commented:
try
gvAttributes.Datasource = myList
gvAttributes.DataBind() ' if its missing
0
 
jpaulinoCommented:
sm394,
DataBind() method is only for ASP.NET gridviews not for DataGridView
 
NTGuru705,
You are trying to bind the datagridview with the collection but you cannot do that way. Create a new datatable (instead of the class) and add the new datarows. Then you can bind easily.
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
NTGuru705Author Commented:
I am not sure I follow 100% could you elaborate on this please?
0
 
jpaulinoCommented:
Small example
        Dim dt As New DataTable
        Dim rnd As New Random()
 
        dt.Columns.Add(New DataColumn("ID", GetType(Integer)))
        dt.Columns.Add(New DataColumn("Description", GetType(String)))
        dt.Columns.Add(New DataColumn("Value", GetType(Integer)))
 
        ' Here you add the values
        For x As Byte = 1 To 250
            Dim dr As DataRow = dt.NewRow()
            dr("ID") = x
            dr.Item("Description") = "Description " & x.ToString
            dr.Item("Value") = rnd.Next
            dt.Rows.Add(dr)
        Next
 
       ' Bind the information to the DataGridView1 
       ' (you don't need to create the columns before)
        Me.DataGridView1.DataSource = dt

Open in new window

0
 
NTGuru705Author Commented:
I suppose I am confused in why the arraylist doesnt work.. I understand your workaround.. (thank you for example) but I would like to understand why the arraylist binds but doesnt display... could you help me understand that one?

Thank you for your help.
0
 
jpaulinoCommented:
Because you're not binding a regular arraylist but a structure. Datagridview doesn't guess that!
0
 
NTGuru705Author Commented:
so in what cases would binding an arraylist work? It seems the most effective way to use an array list is an array of a class.  What is a case that would work?  I am using an arraylist because it is being maintained by the UI and things are added/removed from the list.  So I just use the .remove to take the item out...

I suppose I could do just the same with a datatable but I am trying to understand the why behind it.. could you give me a scenario (other than a simple arraylist of strings) that would work?  Are there any scenarios where binding to a datagridview with an arraylist would work?

Thanks
0
 
jpaulinoCommented:
so in what cases would binding an arraylist work?
 
If you use a regular arraylist, just with values and not structures, it will work.
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

  • 4
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now