Windows Develop Bookmark and Share   
 index > Windows Forms Data Controls and Databinding > Populating a ListView with a datatable
 

Populating a ListView with a datatable

Hi all,
I'm populating a listview by a datatable. I add rows to the datatable manually row by row.
Below is a snapshot of the codes:

Dim dt As New System.Data.DataTable
Dim col As System.Data.DataColumn = dt.Columns.Add("desc", GetType(String))
col = dt.Columns.Add("good_col", GetType(String))
col = dt.Columns.Add("avg_col", GetType(String))
col = dt.Columns.Add("poor_col", GetType(String))

Dim row As DataRow = dt.NewRow
row("desc") = "PE"
row("good_col") = benchMark.PE_good
row("avg_col") = benchMark.PE_avg
row("poor_col") = benchMark.PE_poor
dt.Rows.Add()

If LV_sum.Columns.Count = 0 Then
LV_sum.Columns.Add("Parameters", 100, HorizontalAlignment.Left)
LV_sum.Columns.Add("Good", 100, HorizontalAlignment.Center)
LV_sum.Columns.Add("Average", 100, HorizontalAlignment.Center)
LV_sum.Columns.Add("Below Average", 100, HorizontalAlignment.Center)
End If
LV_sum.Items.Clear()

For Each dr As DataRow In dt.Rows
Dim listItem As New ListViewItem
listItem = dr("desc")
listItem.ImageIndex = 0
listItem.SubItems.Add(dr("good_col").ToString)
listItem.SubItems.Add(dr("avg_col").ToString)
listItem.SubItems.Add(dr("poor_col").ToString)
LV_sum.Items.Add(listItem)
Next

LV_sum.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.HeaderSize)
LV_sum.AutoResizeColumn(1, ColumnHeaderAutoResizeStyle.HeaderSize)
LV_sum.AutoResizeColumn(2, ColumnHeaderAutoResizeStyle.HeaderSize)
LV_sum.AutoResizeColumn(3, ColumnHeaderAutoResizeStyle.HeaderSize)

My problem is: after the execution of the dt.rows.add() instruction, I checked the content of the row and found that the 4 columns of the row are all Null rather than the string value of "PE", benchmark.PE_good (another string variable) etc...

what's wrong?

thanks for all help.

Tony

Tony KT Lau  Thursday, September 17, 2009 7:58 AM
I think may be missing these things, I made them in BOLD:

Dim dt As New System.Data.DataTable
Dim col As System.Data.DataColumn = dt.Columns.Add("desc", GetType(String))
col = dt.Columns.Add("good_col", GetType(String))
col = dt.Columns.Add("avg_col", GetType(String))
col = dt.Columns.Add("poor_col", GetType(String))

Dim row As DataRow = dt.NewRow
row("desc") = "PE"
row("good_col") = benchMark.PE_good
row("avg_col") = benchMark.PE_avg
row("poor_col") = benchMark.PE_poor
dt.Rows.Add(row)

If LV_sum.Columns.Count = 0 Then
LV_sum.Columns.Add("Parameters", 100, HorizontalAlignment.Left)
LV_sum.Columns.Add("Good", 100, HorizontalAlignment.Center)
LV_sum.Columns.Add("Average", 100, HorizontalAlignment.Center)
LV_sum.Columns.Add("Below Average", 100, HorizontalAlignment.Center)
End If
LV_sum.Items.Clear()

For Each dr As DataRow In dt.Rows
Dim listItem As New ListViewItem
listItem.Text = dr("desc")
listItem.ImageIndex = 0
listItem.SubItems.Add(dr("good_col").ToString)
listItem.SubItems.Add(dr("avg_col").ToString)
listItem.SubItems.Add(dr("poor_col").ToString)
LV_sum.Items.Add(listItem)
Next

LV_sum.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.HeaderSize)
LV_sum.AutoResizeColumn(1, ColumnHeaderAutoResizeStyle.HeaderSize)
LV_sum.AutoResizeColumn(2, ColumnHeaderAutoResizeStyle.HeaderSize)
LV_sum.AutoResizeColumn(3, ColumnHeaderAutoResizeStyle.HeaderSize)


Please mark the post as answer if it is helpfull to you because it boosts the members to answer more and more.
  • Marked As Answer byTony KT Lau Thursday, September 17, 2009 9:31 AM
  •  
_SuDhiR_  Thursday, September 17, 2009 8:21 AM
I think may be missing these things, I made them in BOLD:

Dim dt As New System.Data.DataTable
Dim col As System.Data.DataColumn = dt.Columns.Add("desc", GetType(String))
col = dt.Columns.Add("good_col", GetType(String))
col = dt.Columns.Add("avg_col", GetType(String))
col = dt.Columns.Add("poor_col", GetType(String))

Dim row As DataRow = dt.NewRow
row("desc") = "PE"
row("good_col") = benchMark.PE_good
row("avg_col") = benchMark.PE_avg
row("poor_col") = benchMark.PE_poor
dt.Rows.Add(row)

If LV_sum.Columns.Count = 0 Then
LV_sum.Columns.Add("Parameters", 100, HorizontalAlignment.Left)
LV_sum.Columns.Add("Good", 100, HorizontalAlignment.Center)
LV_sum.Columns.Add("Average", 100, HorizontalAlignment.Center)
LV_sum.Columns.Add("Below Average", 100, HorizontalAlignment.Center)
End If
LV_sum.Items.Clear()

For Each dr As DataRow In dt.Rows
Dim listItem As New ListViewItem
listItem.Text = dr("desc")
listItem.ImageIndex = 0
listItem.SubItems.Add(dr("good_col").ToString)
listItem.SubItems.Add(dr("avg_col").ToString)
listItem.SubItems.Add(dr("poor_col").ToString)
LV_sum.Items.Add(listItem)
Next

LV_sum.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.HeaderSize)
LV_sum.AutoResizeColumn(1, ColumnHeaderAutoResizeStyle.HeaderSize)
LV_sum.AutoResizeColumn(2, ColumnHeaderAutoResizeStyle.HeaderSize)
LV_sum.AutoResizeColumn(3, ColumnHeaderAutoResizeStyle.HeaderSize)


Please mark the post as answer if it is helpfull to you because it boosts the members to answer more and more.
  • Marked As Answer byTony KT Lau Thursday, September 17, 2009 9:31 AM
  •  
_SuDhiR_  Thursday, September 17, 2009 8:21 AM
Hi SuDhiR,
It works!!! Thank you very much...
Tony
Tony KT Lau  Thursday, September 17, 2009 9:31 AM

You can use google to search for other answers

Custom Search

More Threads

• Databinding and refill single row in datagrid from database
• How bound are my controls? Entering new text in a ComboBox does not seem to add a new item
• datadridview hidden column still visible
• DataGridView - Make a cell span over two or more columns
• Create computed datagridviewcolumn
• How to make Cell value changed along with with other cell value changing in DataGridView same time?
• DataGridView.Columns[].SortMode problem
• Updating mulitple tables on the same form
• BindingSource +CurrentItemChanged question
• THEARD