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

Reply via email to