Author: suresh
Date: 2005-03-24 00:18:34 -0500 (Thu, 24 Mar 2005)
New Revision: 42186
Modified:
trunk/mcs/class/System.Data/System.Data.Common/ChangeLog
trunk/mcs/class/System.Data/System.Data.Common/DbDataAdapter.cs
Log:
2005-03-23 Sureshkumar T <[EMAIL PROTECTED]>
* DbDataAdapter.cs: For Update, disable ReadOnly constraint
temporarily before updating the row. Info from Ingo Bauersachs.
SkipAllRemainingRows should also skip current row (msdn).
Modified: trunk/mcs/class/System.Data/System.Data.Common/ChangeLog
===================================================================
--- trunk/mcs/class/System.Data/System.Data.Common/ChangeLog 2005-03-24
04:32:49 UTC (rev 42185)
+++ trunk/mcs/class/System.Data/System.Data.Common/ChangeLog 2005-03-24
05:18:34 UTC (rev 42186)
@@ -1,3 +1,9 @@
+2005-03-23 Sureshkumar T <[EMAIL PROTECTED]>
+
+ * DbDataAdapter.cs: For Update, disable ReadOnly constraint
+ temporarily before updating the row. Info from Ingo Bauersachs.
+ SkipAllRemainingRows should also skip current row (msdn).
+
2005-03-22 Sureshkumar T <[EMAIL PROTECTED]>
* DbDataAdapter.cs: Update (): update the rows based on the
Modified: trunk/mcs/class/System.Data/System.Data.Common/DbDataAdapter.cs
===================================================================
--- trunk/mcs/class/System.Data/System.Data.Common/DbDataAdapter.cs
2005-03-24 04:32:49 UTC (rev 42185)
+++ trunk/mcs/class/System.Data/System.Data.Common/DbDataAdapter.cs
2005-03-24 05:18:34 UTC (rev 42186)
@@ -777,9 +777,21 @@
if
(columnMappings != null &&
columnMappings.Contains(columnName))
dstColumnName = columnMappings [dstColumnName].DataSetColumn;
+ DataColumn
dstColumn = row.Table.Columns [dstColumnName];
+ if (dstColumn
== null
+ ||
(dstColumn.Expression != null
+ &&
dstColumn.Expression.Length > 0))
+
continue;
+ // info from :
http://www.error-bank.com/microsoft.public.dotnet.framework.windowsforms.databinding/
+ // [EMAIL
PROTECTED]
+ // disable
readonly for non-expression columns.
+ bool
readOnlyState = dstColumn.ReadOnly;
+
dstColumn.ReadOnly = false;
try {
row
[dstColumnName] = reader [columnName];
- }catch
(Exception) {} // column is not available here
+ } finally {
+
dstColumn.ReadOnly = readOnlyState;
+ }
}
}
@@ -798,7 +810,6 @@
command.UpdatedRowSource ==
UpdateRowSource.OutputParameters) {
// Update output parameters to
row values
foreach (IDataParameter
parameter in command.Parameters) {
-
if
(parameter.Direction != ParameterDirection.InputOutput
&&
parameter.Direction != ParameterDirection.Output
&&
parameter.Direction != ParameterDirection.ReturnValue)
@@ -808,7 +819,19 @@
if (columnMappings !=
null &&
columnMappings.Contains(parameter.SourceColumn))
dsColumnName =
columnMappings [parameter.SourceColumn].DataSetColumn;
- row [dsColumnName] =
parameter.Value;
+ DataColumn dstColumn =
row.Table.Columns [dsColumnName];
+ if (dstColumn == null
+ ||
(dstColumn.Expression != null
+ &&
dstColumn.Expression.Length > 0))
+ continue;
+ bool readOnlyState =
dstColumn.ReadOnly;
+ dstColumn.ReadOnly =
false;
+ try {
+ row
[dsColumnName] = parameter.Value;
+ } finally {
+
dstColumn.ReadOnly = readOnlyState;
+ }
+
}
}
@@ -817,14 +840,12 @@
OnRowUpdated(updatedArgs);
switch(updatedArgs.Status) {
case UpdateStatus.Continue:
- row.AcceptChanges();
break;
case UpdateStatus.ErrorsOccurred:
throw(updatedArgs.Errors);
case UpdateStatus.SkipCurrentRow:
continue;
case UpdateStatus.SkipAllRemainingRows:
- row.AcceptChanges ();
return updateCount;
}
row.AcceptChanges ();
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches