Author: atsushi
Date: 2005-04-19 06:45:01 -0400 (Tue, 19 Apr 2005)
New Revision: 43244
Modified:
trunk/mcs/class/System.Data/System.Data/ChangeLog
trunk/mcs/class/System.Data/System.Data/DataRowView.cs
trunk/mcs/class/System.Data/Test/System.Data/ChangeLog
trunk/mcs/class/System.Data/Test/System.Data/DataViewTest.cs
Log:
2005-04-19 Atsushi Enomoto <[EMAIL PROTECTED]>
* DataRowView.cs : indexer should access to DataRow with proper
DataRowVersion. Fixed bug #74650.
* DataViewTest.cs : added more RowStateFilter test (bug #74650).
Modified: trunk/mcs/class/System.Data/System.Data/ChangeLog
===================================================================
--- trunk/mcs/class/System.Data/System.Data/ChangeLog 2005-04-19 10:30:19 UTC
(rev 43243)
+++ trunk/mcs/class/System.Data/System.Data/ChangeLog 2005-04-19 10:45:01 UTC
(rev 43244)
@@ -1,3 +1,8 @@
+2005-04-19 Atsushi Enomoto <[EMAIL PROTECTED]>
+
+ * DataRowView.cs : indexer should access to DataRow with proper
+ DataRowVersion. Fixed bug #74650.
+
2005-04-18 Sureshkumar T <[EMAIL PROTECTED]>
* DataRow.cs: if there are no mapping fields, fill with default
Modified: trunk/mcs/class/System.Data/System.Data/DataRowView.cs
===================================================================
--- trunk/mcs/class/System.Data/System.Data/DataRowView.cs 2005-04-19
10:30:19 UTC (rev 43243)
+++ trunk/mcs/class/System.Data/System.Data/DataRowView.cs 2005-04-19
10:45:01 UTC (rev 43244)
@@ -139,7 +139,7 @@
public object this[string column] {
get {
DataColumn dc = dataView.Table.Columns[column];
- return dataRow[dc];
+ return dataRow[dc, GetActualRowVersion ()];
}
set {
DataColumn dc = dataView.Table.Columns[column];
@@ -152,7 +152,7 @@
public object this[int column] {
get {
DataColumn dc = dataView.Table.Columns[column];
- return dataRow[dc];
+ return dataRow[dc, GetActualRowVersion ()];
}
set {
DataColumn dc = dataView.Table.Columns[column];
@@ -161,6 +161,22 @@
}
}
+ private DataRowVersion GetActualRowVersion ()
+ {
+ switch (dataView.RowStateFilter) {
+ case DataViewRowState.Added:
+ return DataRowVersion.Proposed;
+ case DataViewRowState.ModifiedOriginal:
+ case DataViewRowState.Deleted:
+ case DataViewRowState.Unchanged:
+ case DataViewRowState.OriginalRows:
+ return DataRowVersion.Original;
+ case DataViewRowState.ModifiedCurrent:
+ return DataRowVersion.Current;
+ }
+ return DataRowVersion.Default;
+ }
+
public DataRow Row {
get { return dataRow; }
}
Modified: trunk/mcs/class/System.Data/Test/System.Data/ChangeLog
===================================================================
--- trunk/mcs/class/System.Data/Test/System.Data/ChangeLog 2005-04-19
10:30:19 UTC (rev 43243)
+++ trunk/mcs/class/System.Data/Test/System.Data/ChangeLog 2005-04-19
10:45:01 UTC (rev 43244)
@@ -1,3 +1,7 @@
+2005-04-19 Atsushi Enomoto <[EMAIL PROTECTED]>
+
+ * DataViewTest.cs : added more RowStateFilter test (bug #74650).
+
2005-04-17 Atsushi Enomoto <[EMAIL PROTECTED]>
* DataViewTest.cs : added more test for Delete() based on bug #74631.
Modified: trunk/mcs/class/System.Data/Test/System.Data/DataViewTest.cs
===================================================================
--- trunk/mcs/class/System.Data/Test/System.Data/DataViewTest.cs
2005-04-19 10:30:19 UTC (rev 43243)
+++ trunk/mcs/class/System.Data/Test/System.Data/DataViewTest.cs
2005-04-19 10:45:01 UTC (rev 43244)
@@ -189,6 +189,42 @@
}
[Test]
+ public void RowStateFilter_2 ()
+ {
+ DataSet dataset = new DataSet ("new");
+ DataTable dt = new DataTable ("table1");
+ dataset.Tables.Add (dt);
+ dt.Columns.Add ("col1");
+ dt.Columns.Add ("col2");
+ dt.Rows.Add (new object [] {1,1});
+ dt.Rows.Add (new object [] {1,2});
+ dt.Rows.Add (new object [] {1,3});
+ dataset.AcceptChanges ();
+
+ DataView dataView = new DataView (dataset.Tables [0]);
+
+ // 'new' table in this sample contains 6 records
+ dataView.AllowEdit = true;
+ dataView.AllowDelete = true;
+ string v;
+
+ // Editing the row
+ dataView [0] ["col1"] = -1;
+ dataView.RowStateFilter =
DataViewRowState.ModifiedOriginal;
+ v = dataView [0] [0].ToString ();
+ AssertEquals ("ModifiedOriginal.Count", 1,
dataView.Count);
+ AssertEquals ("ModifiedOriginal.Value", "1", v);
+
+ // Deleting the row
+ dataView.Delete (0);
+ dataView.RowStateFilter = DataViewRowState.Deleted;
+
+ v = dataView [0] [0].ToString ();
+ AssertEquals ("Deleted.Count", 1, dataView.Count);
+ AssertEquals ("Deleted.Value", "1", v);
+ }
+
+ [Test]
public void Sort ()
{
dataView.Sort = "itemName DESC";
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches