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(); } }
public bool ValidateRow(int itemIndex, out bool cancelRowEdit) { if (IsNewRowPos(itemIndex)) { return(NewRowHandler.ValidateNewRow(_newRow, out cancelRowEdit)); } cancelRowEdit = false; return(true); }
protected override object AddNewCore() { var newRow = _newRow ?? NewRowHandler.AddNewRow(); if (newRow == null) { return(null); } Items.Add(newRow); _newRow = newRow; return(newRow); }
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; } }