Пример #1
0
        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);
            }
        }
Пример #2
0
        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();
        }