Хорошо. Я наконец дома с моим ноутбуком. Итак, что я сделал, чтобы сделать то же самое, что вы хотели сделать, - я использовал ListView, который я заполняю динамически из таблицы данных. Вот код (краткое описание того, что я делаю, как показано внизу после кода):
For i = 0 To frmSelection.MechDataTable2.Rows.Count - 1
Dim tmpGroup As ListViewGroup = New ListViewGroup(frmSelection.MechDataTable2.Rows(i).Item("MechName"))
ltvMechs.Groups.Add(tmpGroup)
Dim tmpListItem1 As ListViewItem = New ListViewItem(tmpGroup)
Dim tmpListItem2 As ListViewItem = New ListViewItem(tmpGroup)
Dim tmpListItem3 As ListViewItem = New ListViewItem(tmpGroup)
Dim tmpListItem4 As ListViewItem = New ListViewItem(tmpGroup)
Dim tmpListItem5 As ListViewItem = New ListViewItem(tmpGroup)
'row1
tmpListItem1.SubItems.Add("co1")
tmpListItem1.SubItems.Add("co2")
tmpListItem1.SubItems.Add("co3")
tmpListItem1.SubItems.Add("co4")
tmpListItem1.SubItems.Add("co5")
tmpListItem1.SubItems.Add("co6")
tmpListItem1.SubItems.Add("co7")
tmpListItem1.SubItems(0).Text = "Select"
tmpListItem1.SubItems(1).Text = frmSelection.MechDataTable2.Rows(i).Item("Price")
tmpListItem1.SubItems(2).Text = frmSelection.MechDataTable2.Rows(i).Item("MechID")
tmpListItem1.SubItems(3).Text = "Faction Orientation"
tmpListItem1.SubItems(4).Text = frmSelection.MechDataTable2.Rows(i).Item("FactionOrientation")
tmpListItem1.SubItems(5).Text = "Engine HDP"
tmpListItem1.SubItems(6).Text = frmSelection.MechDataTable2.Rows(i).Item("EngineHardPoint")
'row2
tmpListItem2.SubItems.Add("co1")
tmpListItem2.SubItems.Add("co2")
tmpListItem2.SubItems.Add("co3")
tmpListItem2.SubItems.Add("co4")
tmpListItem2.SubItems.Add("co5")
tmpListItem2.SubItems.Add("co6")
tmpListItem2.SubItems.Add("co7")
tmpListItem2.SubItems(0).Text = ""
tmpListItem2.SubItems(1).Text = ""
tmpListItem2.SubItems(2).Text = ""
tmpListItem2.SubItems(3).Text = "Required Rep"
tmpListItem2.SubItems(4).Text = frmSelection.MechDataTable2.Rows(i).Item("RequiredRep")
tmpListItem2.SubItems(5).Text = "Generator HDP"
tmpListItem2.SubItems(6).Text = frmSelection.MechDataTable2.Rows(i).Item("GeneratorHardPoint")
'row3
tmpListItem3.SubItems.Add("co1")
tmpListItem3.SubItems.Add("co2")
tmpListItem3.SubItems.Add("co3")
tmpListItem3.SubItems.Add("co4")
tmpListItem3.SubItems.Add("co5")
tmpListItem3.SubItems.Add("co6")
tmpListItem3.SubItems.Add("co7")
tmpListItem3.SubItems(0).Text = ""
tmpListItem3.SubItems(1).Text = ""
tmpListItem3.SubItems(2).Text = ""
tmpListItem3.SubItems(3).Text = "Resilience"
tmpListItem3.SubItems(4).Text = frmSelection.MechDataTable2.Rows(i).Item("Resilience")
tmpListItem3.SubItems(5).Text = "Heavy HDP"
tmpListItem3.SubItems(6).Text = frmSelection.MechDataTable2.Rows(i).Item("HeavyHardPoint")
'row4
tmpListItem4.SubItems.Add("co1")
tmpListItem4.SubItems.Add("co2")
tmpListItem4.SubItems.Add("co3")
tmpListItem4.SubItems.Add("co4")
tmpListItem4.SubItems.Add("co5")
tmpListItem4.SubItems.Add("co6")
tmpListItem4.SubItems.Add("co7")
tmpListItem4.SubItems(0).Text = ""
tmpListItem4.SubItems(1).Text = ""
tmpListItem4.SubItems(2).Text = ""
tmpListItem4.SubItems(3).Text = "Weight"
tmpListItem4.SubItems(4).Text = frmSelection.MechDataTable2.Rows(i).Item("Weight")
tmpListItem4.SubItems(5).Text = "Medium HDP"
tmpListItem4.SubItems(6).Text = frmSelection.MechDataTable2.Rows(i).Item("MediumHardPoint")
'row5
tmpListItem5.SubItems.Add("co1")
tmpListItem5.SubItems.Add("co2")
tmpListItem5.SubItems.Add("co3")
tmpListItem5.SubItems.Add("co4")
tmpListItem5.SubItems.Add("co5")
tmpListItem5.SubItems.Add("co6")
tmpListItem5.SubItems.Add("co7")
tmpListItem5.SubItems(0).Text = ""
tmpListItem5.SubItems(1).Text = ""
tmpListItem5.SubItems(2).Text = ""
tmpListItem5.SubItems(3).Text = "Structure"
tmpListItem5.SubItems(4).Text = frmSelection.MechDataTable2.Rows(i).Item("Class")
tmpListItem5.SubItems(5).Text = "Light HDP"
tmpListItem5.SubItems(6).Text = frmSelection.MechDataTable2.Rows(i).Item("LightHardPoint")
ltvMechs.Items.Add(tmpListItem1)
ltvMechs.Items.Add(tmpListItem2)
ltvMechs.Items.Add(tmpListItem3)
ltvMechs.Items.Add(tmpListItem4)
ltvMechs.Items.Add(tmpListItem5)
Next
По сути, каждый элемент списка - это строка в группе, каждый подэлемент - это ячейка в строке (аналогично тому, что вы увидите в excel, access ect.), Подэлемент (0) находится в col1, подэлемент (1) - в сб. Для вашего первого столбца у вас будет подпункт (0) listItem1, который будет изображением, а все остальные подпункты (0) вы захотите сделать пустыми. Как я уже сказал в своем комментарии выше, я написал это на vb.net, но, судя по всему, он не сильно отличается от C #. Также вот изображение части того, что производит этот код. извините за качество, но это лучшее, что я мог сделать с тем, с чем мне приходилось работать. альтернативный текст http://img268.imageshack.us/img268/7977/listviewexample.png