private void _listGroup_ListDataChanged(ListGroupNode listGroup, ListEventArgs a) { DataTable table = _dataSet.Tables[listGroup.FullPath]; System.Diagnostics.Debug.Assert(table != null); if (a is RefreshAllListEventArgs) { refreshListData(listGroup, table, a, 0, (int)listGroup.LengthState.Value); } else if (a is DeleteListEventArgs) { deleteListData(listGroup, table, a.ParentIndices, ((DeleteListEventArgs)a).Start, ((DeleteListEventArgs)a).Length); } else if (a is ChangeListEventArgs) { } else if (a is InsertListEventArgs) { InsertListEventArgs ia = (InsertListEventArgs)a; renumberListData(listGroup, table, ia.ParentIndices, ia.InsertAfter + 1, ia.InsertAfter + ia.ItemCount + 1, ia.InsertAfter); refreshListData(listGroup, table, ia, ia.InsertAfter + 1, ia.ItemCount); } }
private void _listGroup_ListDataChanged(ListGroupNode listGroup, ListEventArgs a) { System.Diagnostics.Debug.Assert(listGroup == _listGroup); _listView.BeginUpdate(); if (a is RefreshAllListEventArgs) { _listView.Items.Clear(); int length = (int)_listGroup.LengthState.Value; for (int i = 0; i < length; i++) { _listView.Items.Add(new ListViewItem()); } refreshListData(_listGroup.Appliance.VariableTable, 0, length); } else if (a is DeleteListEventArgs) { DeleteListEventArgs da = (DeleteListEventArgs)a; // +1 because indicies are inclusive for (int i = 0; i < da.Length; i++) { _listView.Items.RemoveAt(da.Start); } } else if (a is ChangeListEventArgs) { ChangeListEventArgs ca = (ChangeListEventArgs)a; int lenDiff; if (ca.OldLength < ca.NewLength) { lenDiff = ca.NewLength - ca.OldLength; for (int i = 0; i < lenDiff; i++) { _listView.Items.Insert(ca.Start + i, new ListViewItem()); } for (int i = lenDiff; i < ca.NewLength; i++) { _listView.Items[ca.Start + i].SubItems.Clear(); } } else { lenDiff = ca.OldLength - ca.NewLength; for (int i = 0; i < lenDiff; i++) { _listView.Items.RemoveAt(ca.Start + i); } for (int i = ca.Start; i < (ca.Start + ca.NewLength); i++) { _listView.Items[i].SubItems.Clear(); } } refreshListData(_listGroup.Appliance.VariableTable, ca.Start, ca.NewLength); } else if (a is InsertListEventArgs) { InsertListEventArgs ia = (InsertListEventArgs)a; for (int i = 0; i < ia.ItemCount; i++) { _listView.Items.Insert(ia.InsertAfter + i, new ListViewItem()); } refreshListData(_listGroup.Appliance.VariableTable, ia.InsertAfter, ia.ItemCount); } _listView.EndUpdate(); }