本文整理汇总了C#中System.Data.DataRow.GetColumnError方法的典型用法代码示例。如果您正苦于以下问题:C# DataRow.GetColumnError方法的具体用法?C# DataRow.GetColumnError怎么用?C# DataRow.GetColumnError使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Data.DataRow
的用法示例。
在下文中一共展示了DataRow.GetColumnError方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetCompareText
protected string GetCompareText(List<ColumnType> columnTypes, DataRow dataRow, int i)
{
if (string.IsNullOrEmpty(dataRow.GetColumnError(i)))
return string.Empty;
var factory = new CellFormatterFactory();
var formatter = factory.GetObject(columnTypes[i]);
return formatter.Format(dataRow.GetColumnError(i));
}
示例2: ImportRow
public void ImportRow(DataRow row)
{
IntPtr hscp;
Bid.ScopeEnter(out hscp, "<ds.DataTable.ImportRow|API> %d#\n", ObjectID);
try {
int oldRecord = -1, newRecord = -1;
if (row == null)
return;
if (row.oldRecord != -1) {
oldRecord = recordManager.ImportRecord(row.Table, row.oldRecord);
}
if (row.newRecord != -1) { // row not deleted
if (row.RowState != DataRowState.Unchanged) { // not unchanged, it means Added or modified
newRecord = recordManager.ImportRecord(row.Table, row.newRecord);
}
else
newRecord = oldRecord;
}
if (oldRecord != -1 || newRecord != -1) {
DataRow targetRow = AddRecords(oldRecord, newRecord);
if (row.HasErrors) {
targetRow.RowError = row.RowError;
DataColumn[] cols = row.GetColumnsInError();
for (int i = 0; i < cols.Length; i++) {
DataColumn col = targetRow.Table.Columns[cols[i].ColumnName];
targetRow.SetColumnError(col, row.GetColumnError(cols[i]));
}
}
}
}
finally {
Bid.ScopeLeave(ref hscp);
}
}
示例3: CopyRow
internal void CopyRow(DataTable table, DataRow row)
{
int oldRecord = -1, newRecord = -1;
if (row == null)
return;
if (row.oldRecord != -1) {
oldRecord = table.recordManager.ImportRecord(row.Table, row.oldRecord);
}
if (row.newRecord != -1) {
if (row.newRecord != row.oldRecord) {
newRecord = table.recordManager.ImportRecord(row.Table, row.newRecord);
}
else
newRecord = oldRecord;
}
DataRow targetRow = table.AddRecords(oldRecord, newRecord);
if (row.HasErrors) {
targetRow.RowError = row.RowError;
DataColumn[] cols = row.GetColumnsInError();
for (int i = 0; i < cols.Length; i++) {
DataColumn col = targetRow.Table.Columns[cols[i].ColumnName];
targetRow.SetColumnError(col, row.GetColumnError(cols[i]));
}
}
}
示例4: MergeRow
internal DataRow MergeRow(DataRow row, DataRow targetRow, bool preserveChanges, Index idxSearch) {
if (targetRow == null) {
targetRow = this.NewEmptyRow();
targetRow.oldRecord = recordManager.ImportRecord(row.Table, row.oldRecord);
targetRow.newRecord = targetRow.oldRecord;
if(row.oldRecord != row.newRecord) {
targetRow.newRecord = recordManager.ImportRecord(row.Table, row.newRecord);
}
InsertRow(targetRow, -1);
}
else {
// SQLBU 500789: Record Manager corruption during Merge when target row in edit state
// the newRecord would be freed and overwrite tempRecord (which became the newRecord)
// this would leave the DataRow referencing a freed record and leaking memory for the now lost record
int proposedRecord = targetRow.tempRecord; // by saving off the tempRecord, EndEdit won't free newRecord
targetRow.tempRecord = -1;
try {
DataRowState saveRowState = targetRow.RowState;
int saveIdxRecord = (saveRowState == DataRowState.Added) ? targetRow.newRecord : saveIdxRecord = targetRow.oldRecord;
int newRecord;
int oldRecord;
if (targetRow.RowState == DataRowState.Unchanged && row.RowState == DataRowState.Unchanged) {
// unchanged row merging with unchanged row
oldRecord = targetRow.oldRecord;
newRecord = (preserveChanges) ? recordManager.CopyRecord(this, oldRecord, -1) : targetRow.newRecord;
oldRecord = recordManager.CopyRecord(row.Table, row.oldRecord, targetRow.oldRecord);
SetMergeRecords(targetRow, newRecord, oldRecord, DataRowAction.Change);
}
else if (row.newRecord == -1) {
// Incoming row is deleted
oldRecord = targetRow.oldRecord;
if (preserveChanges) {
newRecord = (targetRow.RowState == DataRowState.Unchanged)? recordManager.CopyRecord(this, oldRecord, -1) : targetRow.newRecord;
}
else
newRecord = -1;
oldRecord = recordManager.CopyRecord(row.Table, row.oldRecord, oldRecord);
// Change index record, need to update index
if (saveIdxRecord != ((saveRowState == DataRowState.Added) ? newRecord : oldRecord)) {
SetMergeRecords(targetRow, newRecord, oldRecord, (newRecord == -1) ? DataRowAction.Delete : DataRowAction.Change);
idxSearch.Reset();
saveIdxRecord = ((saveRowState == DataRowState.Added) ? newRecord : oldRecord);
} else {
SetMergeRecords(targetRow, newRecord, oldRecord, (newRecord == -1) ? DataRowAction.Delete : DataRowAction.Change);
}
}
else {
// incoming row is added, modified or unchanged (targetRow is not unchanged)
oldRecord = targetRow.oldRecord;
newRecord = targetRow.newRecord;
if (targetRow.RowState == DataRowState.Unchanged) {
newRecord = recordManager.CopyRecord(this, oldRecord, -1);
}
oldRecord = recordManager.CopyRecord(row.Table, row.oldRecord, oldRecord);
if (!preserveChanges) {
newRecord = recordManager.CopyRecord(row.Table, row.newRecord, newRecord);
}
SetMergeRecords(targetRow, newRecord, oldRecord, DataRowAction.Change);
}
if (saveRowState == DataRowState.Added && targetRow.oldRecord != -1)
idxSearch.Reset();
Debug.Assert(saveIdxRecord == ((saveRowState == DataRowState.Added) ? targetRow.newRecord : targetRow.oldRecord), "oops, you change index record without noticing it");
}
finally {
targetRow.tempRecord = proposedRecord;
}
}
// Merge all errors
if (row.HasErrors) {
if (targetRow.RowError.Length == 0) {
targetRow.RowError = row.RowError;
} else {
targetRow.RowError += " ]:[ " + row.RowError;
}
DataColumn[] cols = row.GetColumnsInError();
for (int i = 0; i < cols.Length; i++) {
DataColumn col = targetRow.Table.Columns[cols[i].ColumnName];
targetRow.SetColumnError(col, row.GetColumnError(cols[i]));
}
}else {
if (!preserveChanges) {
targetRow.ClearErrors();
}
}
return targetRow;
}
示例5: RowHasErrors
internal static bool RowHasErrors(DataRow row) {
int colCount = row.Table.Columns.Count;
if ((row.HasErrors) && (row.RowError.Length > 0))
return true;
for (int colNum = 0; colNum < colCount; ++colNum) {
DataColumn column = row.Table.Columns[colNum];
string error = row.GetColumnError(column);
if (error == null || error.Length == 0) {
continue;
}
return true;
}
return false;
}
示例6: RowHasErrors
internal static bool RowHasErrors(DataRow row)
{
int count = row.Table.Columns.Count;
if (row.HasErrors && (row.RowError.Length > 0))
{
return true;
}
for (int i = 0; i < count; i++)
{
DataColumn column = row.Table.Columns[i];
string columnError = row.GetColumnError(column);
if ((columnError != null) && (columnError.Length != 0))
{
return true;
}
}
return false;
}
示例7: ConvertToSurrogateRowError
/*
Constructs the surrogate rowerror, columnsInError and columnErrors.
*/
private void ConvertToSurrogateRowError(DataRow row, int rowIndex)
{
Debug.Assert(row != null);
Debug.Assert(_rowErrors != null);
Debug.Assert(_colErrors != null);
if (row.HasErrors)
{
_rowErrors.Add(rowIndex, row.RowError);
DataColumn[] dcArr = row.GetColumnsInError();
if (dcArr.Length > 0)
{
int[] columnsInError = new int[dcArr.Length];
string[] columnErrors = new string[dcArr.Length];
for (int i = 0; i < dcArr.Length; i++)
{
columnsInError[i] = dcArr[i].Ordinal;
columnErrors[i] = row.GetColumnError(dcArr[i]);
}
ArrayList list = new ArrayList();
list.Add(columnsInError);
list.Add(columnErrors);
_colErrors.Add(rowIndex, list);
}
}
}
示例8: ImportRow
public void ImportRow(DataRow row)
{
long logScopeId = DataCommonEventSource.Log.EnterScope("<ds.DataTable.ImportRow|API> {0}", ObjectID);
try
{
int oldRecord = -1, newRecord = -1;
if (row == null)
{
return;
}
if (row._oldRecord != -1)
{
oldRecord = _recordManager.ImportRecord(row.Table, row._oldRecord);
}
if (row._newRecord != -1)
{ // row not deleted
if (row.RowState != DataRowState.Unchanged)
{ // not unchanged, it means Added or modified
newRecord = _recordManager.ImportRecord(row.Table, row._newRecord);
}
else
{
newRecord = oldRecord;
}
}
if (oldRecord != -1 || newRecord != -1)
{
DataRow targetRow = AddRecords(oldRecord, newRecord);
if (row.HasErrors)
{
targetRow.RowError = row.RowError;
DataColumn[] cols = row.GetColumnsInError();
for (int i = 0; i < cols.Length; i++)
{
DataColumn col = targetRow.Table.Columns[cols[i].ColumnName];
targetRow.SetColumnError(col, row.GetColumnError(cols[i]));
}
}
}
}
finally
{
DataCommonEventSource.Log.ExitScope(logScopeId);
}
}
示例9: CopyRow
internal void CopyRow(DataTable table, DataRow row)
{
int oldRecord = -1;
int newRecord = -1;
if (row != null)
{
if (row.oldRecord != -1)
{
oldRecord = table.recordManager.ImportRecord(row.Table, row.oldRecord);
}
if (row.newRecord != -1)
{
if (row.newRecord != row.oldRecord)
{
newRecord = table.recordManager.ImportRecord(row.Table, row.newRecord);
}
else
{
newRecord = oldRecord;
}
}
DataRow row2 = table.AddRecords(oldRecord, newRecord);
if (row.HasErrors)
{
row2.RowError = row.RowError;
DataColumn[] columnsInError = row.GetColumnsInError();
for (int i = 0; i < columnsInError.Length; i++)
{
DataColumn column = row2.Table.Columns[columnsInError[i].ColumnName];
row2.SetColumnError(column, row.GetColumnError(columnsInError[i]));
}
}
}
}
示例10: MergeRow
internal DataRow MergeRow(DataRow row, DataRow targetRow, bool preserveChanges, Index idxSearch)
{
if (targetRow == null)
{
targetRow = this.NewEmptyRow();
targetRow.oldRecord = this.recordManager.ImportRecord(row.Table, row.oldRecord);
targetRow.newRecord = targetRow.oldRecord;
if (row.oldRecord != row.newRecord)
{
targetRow.newRecord = this.recordManager.ImportRecord(row.Table, row.newRecord);
}
this.InsertRow(targetRow, -1L);
}
else
{
int tempRecord = targetRow.tempRecord;
targetRow.tempRecord = -1;
try
{
int oldRecord;
int newRecord;
int num4;
DataRowState rowState = targetRow.RowState;
num4 = (rowState == DataRowState.Added) ? targetRow.newRecord : (num4 = targetRow.oldRecord);
if ((targetRow.RowState == DataRowState.Unchanged) && (row.RowState == DataRowState.Unchanged))
{
oldRecord = targetRow.oldRecord;
newRecord = preserveChanges ? this.recordManager.CopyRecord(this, oldRecord, -1) : targetRow.newRecord;
oldRecord = this.recordManager.CopyRecord(row.Table, row.oldRecord, targetRow.oldRecord);
this.SetMergeRecords(targetRow, newRecord, oldRecord, DataRowAction.Change);
}
else if (row.newRecord == -1)
{
oldRecord = targetRow.oldRecord;
if (preserveChanges)
{
newRecord = (targetRow.RowState == DataRowState.Unchanged) ? this.recordManager.CopyRecord(this, oldRecord, -1) : targetRow.newRecord;
}
else
{
newRecord = -1;
}
oldRecord = this.recordManager.CopyRecord(row.Table, row.oldRecord, oldRecord);
if (num4 != ((rowState == DataRowState.Added) ? newRecord : oldRecord))
{
this.SetMergeRecords(targetRow, newRecord, oldRecord, (newRecord == -1) ? DataRowAction.Delete : DataRowAction.Change);
idxSearch.Reset();
num4 = (rowState == DataRowState.Added) ? newRecord : oldRecord;
}
else
{
this.SetMergeRecords(targetRow, newRecord, oldRecord, (newRecord == -1) ? DataRowAction.Delete : DataRowAction.Change);
}
}
else
{
oldRecord = targetRow.oldRecord;
newRecord = targetRow.newRecord;
if (targetRow.RowState == DataRowState.Unchanged)
{
newRecord = this.recordManager.CopyRecord(this, oldRecord, -1);
}
oldRecord = this.recordManager.CopyRecord(row.Table, row.oldRecord, oldRecord);
if (!preserveChanges)
{
newRecord = this.recordManager.CopyRecord(row.Table, row.newRecord, newRecord);
}
this.SetMergeRecords(targetRow, newRecord, oldRecord, DataRowAction.Change);
}
if ((rowState == DataRowState.Added) && (targetRow.oldRecord != -1))
{
idxSearch.Reset();
}
}
finally
{
targetRow.tempRecord = tempRecord;
}
}
if (row.HasErrors)
{
if (targetRow.RowError.Length == 0)
{
targetRow.RowError = row.RowError;
}
else
{
targetRow.RowError = targetRow.RowError + " ]:[ " + row.RowError;
}
DataColumn[] columnsInError = row.GetColumnsInError();
for (int i = 0; i < columnsInError.Length; i++)
{
DataColumn column = targetRow.Table.Columns[columnsInError[i].ColumnName];
targetRow.SetColumnError(column, row.GetColumnError(columnsInError[i]));
}
return targetRow;
}
if (!preserveChanges)
{
targetRow.ClearErrors();
//.........这里部分代码省略.........
示例11: ImportRow
public void ImportRow(DataRow row)
{
IntPtr ptr;
Bid.ScopeEnter(out ptr, "<ds.DataTable.ImportRow|API> %d#\n", this.ObjectID);
try
{
int oldRecord = -1;
int newRecord = -1;
if (row != null)
{
if (row.oldRecord != -1)
{
oldRecord = this.recordManager.ImportRecord(row.Table, row.oldRecord);
}
if (row.newRecord != -1)
{
if (row.RowState != DataRowState.Unchanged)
{
newRecord = this.recordManager.ImportRecord(row.Table, row.newRecord);
}
else
{
newRecord = oldRecord;
}
}
if ((oldRecord != -1) || (newRecord != -1))
{
DataRow row2 = this.AddRecords(oldRecord, newRecord);
if (row.HasErrors)
{
row2.RowError = row.RowError;
DataColumn[] columnsInError = row.GetColumnsInError();
for (int i = 0; i < columnsInError.Length; i++)
{
DataColumn column = row2.Table.Columns[columnsInError[i].ColumnName];
row2.SetColumnError(column, row.GetColumnError(columnsInError[i]));
}
}
}
}
}
finally
{
Bid.ScopeLeave(ref ptr);
}
}
示例12: IterateErrorsInData
/// <summary>
/// Builds a string out of DataColumns that have errors and gives the name of the
/// column where the first error is stored.
///
/// </summary>
/// <param name="ADataRow">DataRow in which the DataColumn errors should be iterated.</param>
/// <param name="AErrorMessages">String containing all DataColumns that have errors,
/// separated by two CR+LF's.</param>
/// <param name="AFirstErrorControlName">Name of the DataColumn where the first error is
/// stored.
/// </param>
/// <returns>void</returns>
public static void IterateErrorsInData(DataRow ADataRow, out String AErrorMessages, out String AFirstErrorControlName)
{
string ErrorMessage;
int ErrorCounter;
DataColumn[] ErrorColumns;
AErrorMessages = "";
AFirstErrorControlName = "";
ErrorColumns = ADataRow.GetColumnsInError();
for (ErrorCounter = 0; ErrorCounter <= ErrorColumns.Length; ErrorCounter += 1)
{
ErrorMessage = ADataRow.GetColumnError(ErrorColumns[ErrorCounter]);
if (ErrorCounter == 0)
{
AFirstErrorControlName =
ErrorMessage.Substring(ErrorMessage.IndexOf("//[[") + 4, ErrorMessage.IndexOf("]]") - (ErrorMessage.IndexOf("//[[") + 4));
}
ErrorMessage = ErrorMessage.Substring(0, ErrorMessage.IndexOf("//[["));
AErrorMessages = AErrorMessages + ErrorMessage + Environment.NewLine + Environment.NewLine;
}
}