Filling ListView Dynamically From any Data Sources with VB.NET

Filling ListView Dynamically from Any Data Sources with VB.NET

When I was developing different front-end data entry modules for data entry operators, I found that it is very common in different modules to fill a listview according to given query strings, but I was designing a listview for each module from scratch. Then, I thought to make a user control that just takes a connection and query strings and add columns to it dynamically and fills it in the data grid style. Thanks a lot, .NET user control features.

Then, I decided to modify this control and make it more simple, just to share an idea with you about how to fill the list view dynamically.

Let us consider some important parts of the code:

Dim c As DataColumn
For Each c In ds.Tables(0).Columns

   'adding names of columns as Listview columns
   Dim h As New ColumnHeader
   h.Text = c.ColumnName
   h.Width = Convert.ToInt32(Me.numericUpDown1.Value)
   Me.listView1.Columns.Add(h)
Next

The above-mentioned code takes each column name from the query and adds it as the Listview Columns headers.

Dim dt As DataTable = ds.Tables(0)
Dim str(Me.ds.Tables(0).Columns.Count)
'adding Datarows as listview Grids
Dim rr As DataRow
For Each rr In dt.Rows
   For col As Integer = 0 To Me.ds.Tables(0).Columns.Count - 1

      str(col) = rr(col).ToString()
   Next
   Dim ii As New ListViewItem(str)
   Me.listView1.Items.Add(ii)
   'showing the number of records still added
   Me.ShowStatus()

Next

The above-mentioned code is a very important part of the code. We declare an array string equal to the numbers of columns, and then we fill this array with the help of a counter loop. Use a foreach loop to ensure that each row has been filled. So, this basic ideas control was ready to serve me.

However, when I used it with complex queries—for example, those with 8 inner joins having more than 60,000 records—it hung and did not respond, so I had to restart my system.

Then, I decided to use my programming servants (threads) to share my burden after initializing a thread loaded with database querying Hurrah!! I was jubilant now because I did not have to restart my system and I could even see adding records to listView as smoothly as it was a simple query. Thanks, threads (my friends now).

'check if thread is allow to run
   If Me.runThread = True Then
      Dim t As New Thread(AddressOf Me.FillMethod)
      t.Start()
         End If

This is a very basic way to initialize a thread and pass it the reference of a method to be called.

So, be happy, and enjoy the code.



About the Author

Ijaz Ahmed

I am Ijaz Ahmed,working as .Net Developer and Software Engineer at Lahore, Pakistan.I am BS(Honors)Computer Sciences and MCP.NET.You can contact me at NewCallForU@msn.com OR NewCallForU@Yahoo.com

Downloads

Comments

  • Bad Link

    Posted by rodrigo on 04/30/2012 08:30pm

    Bad Link

    Reply
  • Bad Link

    Posted by rodrigo on 04/30/2012 08:29pm

    the link does not work. http://www.codeguru.com/dbfiles/get_file/ListViewFillingDynamicallyVB.zip?id=7923&lbl=LISTVIEWFILLINGDYNAMICALLYVB_ZIP

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Companies undertaking an IT project need to find the right balance between cost and functionality. It's important to start by determining whether to build a solution from scratch, buy an out-of-the-box solution, or a combination of both. In reality, most projects will require some system tailoring to meet business requirements. Decision-makers must understand how much software development is enough and craft a detailed implementation plan to ensure the project's success. This white paper examines the different …

  • On-demand Event Event Date: February 12, 2015 The evolution of systems engineering with the SysML modeling language has resulted in improved requirements specification, better architectural definition, and better hand-off to downstream engineering. Agile methods have proven successful in the software domain, but how can these methods be applied to systems engineering? Check out this webcast and join Bruce Powel Douglass, author of Real-Time Agility, as he discusses how agile methods have had a tremendous …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date