/// <summary> /// 产生数据 /// </summary> /// <param name="dataSet">数据集</param> /// <param name="serialXmlObject">xml序列化对象</param> /// <returns></returns> private _Data GenerateXmlData(DataSet dataSet, MessageSerialXml serialXmlObject) { _Data xmlData = new _Data(); _Table[] xmlTableStructSet = serialXmlObject.Head.DataDefine.TableSet; xmlData.DataTableSet = new _DataTable[serialXmlObject.Head.DataDefine.TableSet.Length]; for (int i = 0; i < xmlTableStructSet.Length; i++) { _Table xmlTableStruct = xmlTableStructSet[i]; _DataTable xmlDataTable = new _DataTable(); DataTable dt = null; if (xmlTableStructSet.Length <= 1) { dt = dataSet.Tables[0]; dt.TableName = xmlTableStruct.TableName; } else { dt = dataSet.Tables[xmlTableStruct.TableName]; } if (dt.Rows.Count <= 0) { continue; } xmlData.DataTableSet[i] = GenerateXmlDataTable(dt, xmlTableStruct, xmlDataTable); } return(xmlData); }
/// <summary> /// 创建消息表结构 /// </summary> /// <param name="dt">数据表</param> /// <param name="xmlTableStruct">表结构</param> /// <param name="xmlDataTable">xml数据表</param> /// <returns></returns> private _DataTable GenerateXmlDataTable(DataTable dt, _Table xmlTableStruct, _DataTable xmlDataTable) { xmlDataTable.TableName = xmlTableStruct.TableName; xmlDataTable.RowSet = new _Row[dt.Rows.Count]; for (int index = 0; index < dt.Rows.Count; index++) { DataRow dr = dt.Rows[index]; _Row xmlRow = new _Row(); xmlRow.Index = index.ToString(); // 设置行顺序 xmlRow.Header = new _Header(); xmlRow.Header.Action = dr["Action"].ToString(); // 设置记录状态 xmlRow.Header.DataItemSet = new _DataItem[xmlTableStruct.FieldItemSet.Length]; for (int fieldIndex = 0; fieldIndex < xmlTableStruct.FieldItemSet.Length; fieldIndex++) { _DataItem xmlDataItem = new _DataItem(); string fieldName = xmlTableStruct.FieldItemSet[fieldIndex].FieldName; xmlDataItem.FieldName = fieldName; xmlDataItem.FieldValue = GetXmlFieldValue(dr[fieldName], dt.Columns[fieldName].DataType); xmlRow.Header.DataItemSet[fieldIndex] = xmlDataItem; } xmlDataTable.RowSet[index] = xmlRow; } return(xmlDataTable); }
/// <summary> /// 创建数据表结构 /// </summary> /// <param name="table"></param> /// <returns></returns> private DataTable CreateDataTableStruct(_Table table) { DataTable dt = new DataTable(table.TableName); System.Collections.Generic.List <DataColumn> primaryKeylist = new List <DataColumn>(); foreach (_FieldItem fieldItem in table.FieldItemSet) { DataColumn col = dt.Columns.Add(); col.ColumnName = fieldItem.FieldName; col.Caption = fieldItem.Caption; col.DataType = GetFieldType(fieldItem.FieldType.Trim(), fieldItem.FieldLength); // 记录主键 if (fieldItem.isPrimaryKey.ToUpper() == "TRUE") { primaryKeylist.Add(col); } } dt.PrimaryKey = primaryKeylist.ToArray(); dt.Columns.Add("Action", typeof(string)); return(dt); }