来源于本人的CSDN博客:http://blog.csdn.net/linjimu/article/details/7107284

只为自己练习,参考,备忘。或许对你没有参考价值,请不要模仿。

一个单据有几个小项目,每个小项目又有几个小项目。可以理解:一个主表,有子表,子表又有子表。

某些单据套用,简单的处理程序。

 

 

  1. Public Class Form2    
  2.     
  3.     '一个总集合:子表。     
  4.     Dim mList As New Dictionary(Of String, Collection)    
  5.     '一个子表里面的子表记录集     
  6.     Dim mcc As New Collection    
  7.     
  8.     Private Sub ShowList()    
  9.         Me.ListView1.Items.Clear()    
  10.         If mList.Count > 0 Then    
  11.             Dim mc As Collection    
  12.             Dim item As ListViewItem    
  13.             Dim strName As String    
  14.             For Each obj As KeyValuePair(Of String, Collection) In mList    
  15.                 mc = obj.Value    
  16.                 strName = String.Empty    
  17.                 item = New ListViewItem    
  18.                 For Each c As Object In mc    
  19.                     strName &= CType(c, DataGridViewRow).Cells(1).Value.ToString    
  20.                 Next    
  21.                 item.Text = strName    
  22.                 item.ImageIndex = 0    
  23.                 item.Tag = mc.GetHashCode.ToString    
  24.                 Me.ListView1.Items.Add(item)    
  25.             Next    
  26.         End If    
  27.     End Sub    
  28.     
  29.     Private Sub Form2_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load    
  30.         Me.DataGridView1.Columns.Add("ID""ID")    
  31.         Me.DataGridView1.Columns.Add("NAME""NAME")    
  32.         Me.DataGridView1.Tag = mcc.GetHashCode.ToString    
  33.     End Sub    
  34.     
  35.     Private Sub BtnAddColl_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles BtnAddColl.Click    
  36.         mcc = New Collection    
  37.         Me.DataGridView1.Rows.Clear()    
  38.         Me.DataGridView1.Tag = mcc.GetHashCode.ToString    
  39.     End Sub    
  40.     
  41.     Private Sub BtnSaveColl_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles BtnSaveColl.Click    
  42.         If Me.DataGridView1.Rows.Count > 0 Then    
  43.             mcc.Clear()    
  44.             For i As Integer = 0 To Me.DataGridView1.RowCount - 1    
  45.                 If Me.DataGridView1.Rows(i).IsNewRow = False Then    
  46.                     mcc.Add(Me.DataGridView1.Rows(i), i.ToString)    
  47.                 End If    
  48.             Next    
  49.             If mList.ContainsKey(Me.DataGridView1.Tag) Then    
  50.                 mList.Item(Me.DataGridView1.Tag) = mcc    
  51.             Else    
  52.                 mList.Add(mcc.GetHashCode.ToString, mcc)    
  53.             End If    
  54.             ShowList()    
  55.         End If    
  56.     End Sub    
  57.     
  58.     Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged    
  59.         If Me.ListView1.SelectedItems.Count > 0 Then    
  60.             Me.DataGridView1.Tag = Me.ListView1.SelectedItems.Item(0).Tag.ToString    
  61.             mcc = mList.Item(Me.DataGridView1.Tag)    
  62.             Me.DataGridView1.Rows.Clear()    
  63.             For Each mc As Object In mcc    
  64.                 Me.DataGridView1.Rows.Add(CType(mc, DataGridViewRow))    
  65.             Next    
  66.         End If    
  67.     End Sub    
  68.     
  69. End Class