예제 #1
0
        public void UpdateResults()
        {
            if (null == _queryRequestor)
            {
                return;
            }
            if (ReferenceEquals(_queryRequestor.QueryResults, QueryResults))
            {
                return;
            }
            var queryResults = _queryRequestor.QueryResults;

            if (queryResults == null)
            {
                return;
            }
            _queryResults = queryResults;
            bool rowCountChanged = Count != QueryResults.ResultRows.Count;
            var  newRow          = _newRow;

            if (newRow != null)
            {
                int newRowPos = Items.IndexOf(newRow);
                CancelNew(newRowPos);
            }
            RowItemList.Clear();
            RowItemList.AddRange(QueryResults.ResultRows);
            if (newRow != null && !NewRowHandler.IsNewRowEmpty(newRow))
            {
                _newRow = newRow;
                AddNew();
            }
            bool propsChanged = false;

            if (_itemProperties == null)
            {
                propsChanged = true;
            }
            else if (!_itemProperties.SequenceEqual(QueryResults.ItemProperties))
            {
                propsChanged = true;
            }
            _itemProperties = QueryResults.ItemProperties;
            AllowNew        = NewRowHandler != null;
            AllowEdit       = true;
            AllowRemove     = false;
            if (propsChanged)
            {
                OnListChanged(new ListChangedEventArgs(ListChangedType.PropertyDescriptorChanged, 0));
                ResetBindings();
            }
            else if (rowCountChanged || 0 == Count)
            {
                ResetBindings();
            }
            else
            {
                OnAllRowsChanged();
            }
        }
예제 #2
0
 public bool ValidateRow(int itemIndex, out bool cancelRowEdit)
 {
     if (IsNewRowPos(itemIndex))
     {
         return(NewRowHandler.ValidateNewRow(_newRow, out cancelRowEdit));
     }
     cancelRowEdit = false;
     return(true);
 }
예제 #3
0
        protected override object AddNewCore()
        {
            var newRow = _newRow ?? NewRowHandler.AddNewRow();

            if (newRow == null)
            {
                return(null);
            }
            Items.Add(newRow);
            _newRow = newRow;
            return(newRow);
        }
예제 #4
0
        public override void EndNew(int itemIndex)
        {
            RowItem committedRow = null;

            if (IsNewRowPos(itemIndex))
            {
                committedRow = NewRowHandler.CommitAddNew(_newRow);
                _newRow      = null;
            }

            base.EndNew(itemIndex);
            if (committedRow != null)
            {
                Items[itemIndex] = committedRow;
            }
        }