}\r
}\r
\r
- if (rowState != DataViewRowState.None) {\r
+ if (rowState != DataViewRowState.None)\r
_rowStateFilter = rowState;\r
- }\r
- else {\r
+ else\r
// FIXME : what is the correct value ?\r
_rowStateFilter = DataViewRowState.CurrentRows;\r
- }\r
}\r
\r
#endregion // Constructors\r
return _filter.EvalBoolean(_tmpRow);\r
}\r
\r
- internal static int GetRecord(DataRow row, DataViewRowState rowStateFilter)\r
+ internal bool ContainsVersion (DataRowState state, DataRowVersion version)\r
{\r
-\r
- if (row.Original == row.Current) {\r
- if ((rowStateFilter & DataViewRowState.Unchanged) != DataViewRowState.None) {\r
- return row.Current;\r
- }\r
+ switch (state) {\r
+ case DataRowState.Unchanged:\r
+ if ((_rowStateFilter & DataViewRowState.Unchanged) != DataViewRowState.None)\r
+ return ((version & DataRowVersion.Default) != 0);\r
+ break;\r
+ case DataRowState.Added:\r
+ if ((_rowStateFilter & DataViewRowState.Added) != DataViewRowState.None)\r
+ return ((version & DataRowVersion.Default) != 0);\r
+ break;\r
+ case DataRowState.Deleted:\r
+ if ((_rowStateFilter & DataViewRowState.Deleted) != DataViewRowState.None)\r
+ return (version == DataRowVersion.Original);\r
+ break;\r
+ default:\r
+ if ((_rowStateFilter & DataViewRowState.ModifiedCurrent) != DataViewRowState.None)\r
+ return ((version & DataRowVersion.Default) != 0);\r
+ if ((_rowStateFilter & DataViewRowState.ModifiedOriginal) != DataViewRowState.None)\r
+ return (version == DataRowVersion.Original);\r
+ break;\r
}\r
- else if (row.Original == -1) {\r
- if ((rowStateFilter & DataViewRowState.Added) != DataViewRowState.None) {\r
- return row.Current;\r
- }\r
- }\r
- else if (row.Current == -1) {\r
- if ((rowStateFilter & DataViewRowState.Deleted) != DataViewRowState.None) {\r
+\r
+ return false;\r
+ }\r
+\r
+ internal static int GetRecord(DataRow row, DataViewRowState rowStateFilter)\r
+ {\r
+ switch (row.RowState) {\r
+ case DataRowState.Unchanged: {\r
+ if ((rowStateFilter & DataViewRowState.Unchanged) != DataViewRowState.None)\r
+ return row.Proposed >= 0 ? row.Proposed : row.Current;\r
+ break;\r
+ }\r
+ case DataRowState.Added: {\r
+ if ((rowStateFilter & DataViewRowState.Added) != DataViewRowState.None)\r
+ return row.Proposed >= 0 ? row.Proposed : row.Current;\r
+ break;\r
+ }\r
+ case DataRowState.Deleted: {\r
+ if ((rowStateFilter & DataViewRowState.Deleted) != DataViewRowState.None)\r
return row.Original;\r
- }\r
- }\r
- else if ((rowStateFilter & DataViewRowState.ModifiedCurrent) != DataViewRowState.None) {\r
- return row.Current;\r
- }\r
- else if ((rowStateFilter & DataViewRowState.ModifiedOriginal) != DataViewRowState.None) {\r
- return row.Original;\r
+ break;\r
+ }\r
+ default:\r
+ if ((rowStateFilter & DataViewRowState.ModifiedCurrent) != DataViewRowState.None)\r
+ return row.Proposed >= 0 ? row.Proposed : row.Current;\r
+ if ((rowStateFilter & DataViewRowState.ModifiedOriginal) != DataViewRowState.None)\r
+ return row.Original;\r
+ break;\r
}\r
\r
- return -1;\r
+ return -1;\r
}\r
\r
/// <summary>\r
}\r
else {\r
for(int i=0; i < columns.Length; i++) {\r
- if (Columns[i] != columns[i]) {\r
+ if (Sort [i] != ListSortDirection.Ascending || Columns[i] != columns[i]) {\r
return false;\r
}\r
}\r