//比如生成下面的字符串,用于Grid++的明细网格
<xml>
<row><CustomerID>BLONP</CustomerID><Company>国皓</Company><Contactor>黄雅玲</Contactor></row>
<row><CustomerID>CACTU</CustomerID><Company>威航货运有限公司</Company><Contactor>刘先生</Contactor></row>
<row><CustomerID>CENTC</CustomerID><Company>三捷实业</Company><Contactor>王先生</Contactor></row>
<row><CustomerID>HUNGC</CustomerID><Company>五金机械</Company><Contactor>苏先生</Contactor></row>
<row><CustomerID>MEREP</CustomerID><Company>华科</Company><Contactor>吴小姐</Contactor></row>
</xml>
//下面的
<xml>
<Master><OrderID>10255</OrderID><CustomerID>RICSU</CustomerID><Company>永大企业</Company></Master>
</xml>
这样形式的数据用于无明细网格,其表头表尾包含有动态数据的报表。此数据对应到报表主数据,通常只有一条记录数据。数据将加载到报表中对应的参数、部件框或自由表格单元格中。
明细记录数据并报表主数据
<xml>
<Master><OrderID>10255</OrderID><CustomerID>RICSU</CustomerID><Company>永大企业</Company></Master>
<Detail><ProductID>2</ProductID><Name>牛奶</Name><Price>15.2000</Price><Qty>20</Qty><Amount>304.0000</Amount></Detail>
<Detail><ProductID>16</ProductID><Name>饼干</Name><Price>13.9000</Price><Qty>35</Qty><Amount>486.5000</Amount></Detail>
<Detail><ProductID>36</ProductID><Name>鱿鱼</Name><Price>15.2000</Price><Qty>25</Qty><Amount>380.0000</Amount></Detail>
<Detail><ProductID>59</ProductID><Name>苏澳奶酪</Name><Price>44.0000</Price><Qty>30</Qty><Amount>1320.0000</Amount></Detail>
</xml>
这样形式的数据适用于在报表中定义了明细网格,且表头表尾包含有动态数据的报表。数据包含两部分,两部分数据通常具有主从一对多的关系。一部分对应报表主数据,只有一条记录的数据。另一部分对应报表明细数据,通常有多条记录的数据,此部分数据将被加载进明细网格的记录集中。
#region 将对象转为xml
/// <summary>
/// 将对象转为xml
/// </summary>
/// <typeparam name="T">泛型对象</typeparam>
/// <param name="enitities">list</param>
/// <returns></returns>
public static string ObjListToXml<T>(List<T> enitities)
{
StringBuilder sb = new StringBuilder();
PropertyInfo[] propinfos = null;
//sb.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sb.AppendLine("<xml>");
foreach (T obj in enitities)
{
//初始化propertyinfo
if (propinfos == null)
{
Type objtype = obj.GetType();
propinfos = objtype.GetProperties();
}
sb.AppendLine("<row>");
foreach (PropertyInfo propinfo in propinfos)
{
sb.Append("<");
sb.Append(propinfo.Name);
sb.Append(">");
sb.Append(propinfo.GetValue(obj, null));
sb.Append("</");
sb.Append(propinfo.Name);
sb.AppendLine(">");
}
sb.AppendLine("</row>");
}
sb.AppendLine("</xml>");
return sb.ToString();
}
#endregion