public void Post() { foreach (DataTable table in mDataTableList) { if (table != null) { if (TableUtil.BoolProperty(table, AUTOCOMMIT)) { DataTable updatetable = table.GetChanges(); if (updatetable != null && updatetable.Rows.Count > 0) { Post(table); } } } } }
public override string GetTranData() { DataTable table = this.Command as DataTable; if (table != null) { DataTable updatetable = table.GetChanges(); if (updatetable != null && updatetable.Rows.Count > 0) { DataColumnCollection columns = table.Columns; DataRow row; RuleColumn rcolumn; Object oldvalue, newvalue; bool haschange; bool hasPK = TableUtil.BoolProperty(updatetable, "HasPK"); StringBuilder sb = new StringBuilder(String.Format("<item type=\"table\" dr=\"{0}\" ds=\"{1}\">", DS, TableUtil.StrProperty(table, "DataSource"))); string command = TableUtil.StrProperty(table, "Command"); if (!command.Equals("")) { sb.Append(string.Format("<command type=\"sql\">{0}</command>", command)); } sb.Append("<rows>"); int count = updatetable.Rows.Count; for (int i = 0; i < count; i++) { row = updatetable.Rows[i]; switch (row.RowState) { case DataRowState.Added: sb.Append("<row state=\"ins\">"); foreach (DataColumn column in columns) { newvalue = row[column.ColumnName, DataRowVersion.Current]; if (newvalue != null) { sb.Append(String.Format("<field name=\"{0}\">", column.ColumnName)); sb.Append(DataUtil.FieldValueToString(newvalue, TableUtil.GetRuleColumn(column))); sb.Append("</field>"); } } sb.Append("</row>"); break; case DataRowState.Modified: row.EndEdit(); sb.Append("<row state=\"upd\">"); foreach (DataColumn column in columns) { rcolumn = TableUtil.GetRuleColumn(column); oldvalue = row[column.ColumnName, DataRowVersion.Original]; newvalue = row[column.ColumnName, DataRowVersion.Current]; haschange = !DataUtil.CheckEquals(oldvalue, newvalue); if (hasPK) { if (haschange || TableUtil.BoolProperty(column, "PK")) { sb.Append(String.Format("<field name=\"{0}\">", column.ColumnName)); sb.Append("<old>"); sb.Append(DataUtil.FieldValueToString(oldvalue, rcolumn)); sb.Append("</old>"); if (haschange) { sb.Append("<cur>"); sb.Append(DataUtil.FieldValueToString(newvalue, rcolumn)); sb.Append("</cur>"); } sb.Append("</field>"); } } else { if (rcolumn == null || haschange || rcolumn.IsForePrimaryKey) { sb.Append(String.Format("<field name=\"{0}\">", column.ColumnName)); sb.Append("<old>"); sb.Append(DataUtil.FieldValueToString(oldvalue, rcolumn)); sb.Append("</old>"); if (haschange) { sb.Append("<cur>"); sb.Append(DataUtil.FieldValueToString(newvalue, rcolumn)); sb.Append("</cur>"); } sb.Append("</field>"); } } } sb.Append("</row>"); break; case DataRowState.Deleted: sb.Append("<row state=\"del\">"); foreach (DataColumn column in columns) { rcolumn = TableUtil.GetRuleColumn(column); if (rcolumn == null || rcolumn.IsForePrimaryKey) { oldvalue = row[column.ColumnName, DataRowVersion.Original]; if (oldvalue != null) { sb.Append(String.Format("<field name=\"{0}\">", column.ColumnName)); sb.Append(DataUtil.FieldValueToString(oldvalue, rcolumn)); sb.Append("</field>"); } } } sb.Append("</row>"); break; } } sb.Append("</rows>"); sb.Append("</item>"); return(sb.ToString()); } } return(""); }