摘要:

1、通过DataSetConvertToByStr实现XML转成DataSet
2、通过 关键字做逐条数据比对
 
原文链接:
http://www.lookdaima.com/page/docItemDetail.html?id=de9330c8-0bc9-46a4-b29e-681bd45d9ab7
 
界面效果:

相关代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="WebForms_WebPages_Blanks_WebTools_Dbs_DataCompares_Default"ValidateRequest="false" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title><script language="javascript" type="text/javascript" src="<%=strPhyPath %>/JS/jquery-1.8.3.min.js"></script><script language="javascript" type="text/javascript" src="<%=strPhyPath %>/JS/CreateCode.js"></script><script language="javascript" type="text/javascript" src="<%=strPhyPath %>/JS/DateOper.js"></script><style type="text/css">.slxdemo-oneline{-moz-border-bottom-colors: none;-moz-border-left-colors: none;-moz-border-right-colors: none;-moz-border-top-colors: none;border-collapse: collapse;border-color: #ccc;border-image: none;border-style: solid;border-width: 1px 0 0 1px;margin-top: 0px;}.slxdemo-oneline th, .slxdemo-oneline td{-moz-border-bottom-colors: none;-moz-border-left-colors: none;-moz-border-right-colors: none;-moz-border-top-colors: none;border-color: #ccc;border-image: none;border-style: solid;border-width: 0 1px 1px 0;padding: 6px;size: 14px;}a.DefaultHref{color: #0000FF;text-decoration: none;}a.DefaultHref:link{color: #0000FF;text-decoration: none;}a.DefaultHref:hover{color: #0000FF;text-decoration: underline;}a.DefaultHref:visited{color: #0000FF;text-decoration: none;}</style>
</head>
<body><form id="form1" runat="server"><div><table border="0" cellpadding="0" cellspacing="5" width="100%"><tr><td colspan="1">&nbsp;</td><td colspan="1"><b>通过数据表的DataSet输出XML做数据比对</b> &nbsp; | <a href="Default.aspx" class="DefaultHref">刷新</a></td></tr><tr><td align="right" valign="top">执行结果:</td><td colspan="3"><asp:Label ID="lbl_ResultTip" runat="server"></asp:Label></td></tr><tr><td align="right" style="width: 100px;">源数据:</td><td colspan="1"><asp:TextBox ID="txt_Source" runat="server" Width="99%" Height="130px" TextMode="MultiLine"></asp:TextBox></td></tr><tr><td align="right" style="width: 100px;">目标数据:</td><td colspan="1"><asp:TextBox ID="txt_Target" runat="server" Width="99%" Height="130px" TextMode="MultiLine"></asp:TextBox></td></tr><tr><td align="right" style="width: 100px;">关键字:</td><td colspan="1"><asp:TextBox ID="txt_PkName" runat="server" Width="99%"></asp:TextBox><br />(组合关键字用|做分隔)</td></tr><tr><td align="right" style="width: 100px;">比较字段:</td><td colspan="1"><asp:TextBox ID="txt_DcName" runat="server" Width="99%" Height="100px" TextMode="MultiLine"></asp:TextBox><br />(组合关键字用|做分隔)</td></tr><tr><td align="right" style="width: 100px; height: 35px;">&nbsp;</td><td colspan="1"><asp:Button ID="btn_SourceDcName" runat="server" Text="源字段清单" OnClick="btn_SourceDcName_Click" /><asp:Button ID="btn_SourceData" runat="server" Text="源数据" OnClick="btn_SourceData_Click" /><asp:Button ID="btn_SourceRowCount" runat="server" Text="源记录数" OnClick="btn_SourceRowCount_Click" /><asp:Button ID="btn_TargetDcName" runat="server" Text="目标字段清单" OnClick="btn_TargetDcName_Click" /><asp:Button ID="btn_TargetData" runat="server" Text="目标数据" OnClick="btn_TargetData_Click" /><asp:Button ID="btn_TargetRowCount" runat="server" Text="目标记录数" OnClick="btn_TargetRowCount_Click" />&nbsp;<asp:Button ID="btn_Example" runat="server" Text="样例" OnClick="btn_Example_Click" />&nbsp; | <a href="Default.aspx" class="DefaultHref">刷新</a></td></tr><tr><td align="right" style="width: 100px; height: 35px;">&nbsp;</td><td colspan="1"><asp:Button ID="btn_SourceMore" runat="server" Text="源多的数据" OnClick="btn_SourceMore_Click" /><asp:Button ID="btn_TargetMore" runat="server" Text="目标多的数据" OnClick="btn_TargetMore_Click" /><asp:Button ID="btn_EqualData" runat="server" Text="相同的数据" OnClick="btn_EqualData_Click" /><asp:Button ID="btn_NoEqualData" runat="server" Text="不相同的数据" OnClick="btn_NoEqualData_Click" /><asp:Button ID="btn_DcCompare" runat="server" Text="字段是否相同" OnClick="btn_DcCompare_Click" /></td></tr><tr><td align="right" valign="top">输出:</td><td colspan="3"><asp:Literal ID="lt_Result" runat="server"></asp:Literal><asp:TextBox ID="txt_Result" Visible="false" runat="server" Width="99%" Height="130px"TextMode="MultiLine"></asp:TextBox></td></tr></table></div></form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using System.IO;public partial class WebForms_WebPages_Blanks_WebTools_Dbs_DataCompares_Default :PageBase
{#region 样例数据/// <summary>/// /// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void btn_Example_Click(object sender, EventArgs e){txt_PkName.Text = "Guid";txt_Source.Text = @"
<NewDataSet><BS_NOFLIGHTJOB_ALLOCATION><GUID>60cafcf3deb7458e90247bfc18aa846b</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-04T15:03:46.3125+08:00</INSERT_TIME><UPDATE_TIME>2019-03-04T15:03:46.3125+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-04T15:03:46+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>数量测试2</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>47a734fb88a14abd8ca0d82896d7d2f1</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-04T15:16:22.703125+08:00</INSERT_TIME><UPDATE_TIME>2019-03-04T15:16:22.703125+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-04T15:16:22+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>下次下发任务,是否情况此处内容?</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>1c109716f32140b88bec1e2e4622bcad</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-05T15:44:56.015625+08:00</INSERT_TIME><UPDATE_TIME>2019-03-05T15:44:56.015625+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-05T15:44:56+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>121212</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>9a6e271b22f94953bfc0cb55997ec477</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-04T15:03:31.921875+08:00</INSERT_TIME><UPDATE_TIME>2019-03-04T15:03:31.921875+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-04T15:03:31+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>数量测试1</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>a5b5763c85704fa2ab824c2a39649c6f</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-06T11:30:37.02593+08:00</INSERT_TIME><UPDATE_TIME>2019-03-06T11:30:37.02593+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-06T11:30:37+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>啊啊啊啊啊</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>e4899af22ac44fe8bec6085223fe218d</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-06T09:34:56.500608+08:00</INSERT_TIME><UPDATE_TIME>2019-03-06T09:34:56.500608+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-06T09:34:56+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>qqqqqqqqqq</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>f964b564b37b4e6f9cf70fa65802a0bc</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-06T09:37:35.601659+08:00</INSERT_TIME><UPDATE_TIME>2019-03-06T09:37:35.601659+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-06T09:37:35+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>zzzzzzzzzzzzz</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>5a2563ee706945168ae7837a931321f6</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-01T16:36:43.569723+08:00</INSERT_TIME><UPDATE_TIME>2019-03-01T16:36:43.569723+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-01T16:36:43+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>202020</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>e0dc6581344447e4b36e4d9d11f0134c</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-05T14:57:01.6875+08:00</INSERT_TIME><UPDATE_TIME>2019-03-05T14:57:01.6875+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-05T14:57:01+08:00</ARCHIVE_DATE><JOB_GROUP>LSSJ</JOB_GROUP><JOB>LSSJ</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>撤销看APP情况</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>5913ee4a0f404e09bd39054233a906a4</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-05T14:19:04.453125+08:00</INSERT_TIME><UPDATE_TIME>2019-03-05T14:19:04.453125+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-05T14:19:04+08:00</ARCHIVE_DATE><JOB_GROUP>TBDRW</JOB_GROUP><JOB>TBDRW</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>1111111111</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>d8621396e58c4c9fbf3d1db5db0708a9</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-06T09:34:09.736506+08:00</INSERT_TIME><UPDATE_TIME>2019-03-06T09:34:09.736506+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-06T09:34:09+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>eeeeeee</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>0dd8b3e4521a41b19477f5af64dd0033</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-04T09:49:41.596452+08:00</INSERT_TIME><UPDATE_TIME>2019-03-04T09:49:41.596452+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-04T09:49:41+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>6666</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>73d9bc57540241a783028463de591e64</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-05T10:01:01.899396+08:00</INSERT_TIME><UPDATE_TIME>2019-03-05T10:01:01.899396+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-05T10:01:01+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>0010313</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>44ebd4cda4ae45e7ba0f945578c0fa4c</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-01T15:02:32.507773+08:00</INSERT_TIME><UPDATE_TIME>2019-03-01T15:02:32.507773+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-01T15:02:32+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>001</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>d8e40354480e42f3bb3c3a1bdd557d62</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-05T09:33:05.902947+08:00</INSERT_TIME><UPDATE_TIME>2019-03-05T09:33:05.902947+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-05T09:33:05+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>qqqqqqqqqqqqqq</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>f1ef5340e8254aeaaf0d236680ea8fd6</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-01T16:18:24.286178+08:00</INSERT_TIME><UPDATE_TIME>2019-03-01T16:18:24.286178+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-01T16:18:24+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>16161616</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION>
</NewDataSet>
";txt_Target.Text = @"
<NewDataSet><BS_NOFLIGHTJOB_ALLOCATION><GUID>07af40d4960a4b7baf93bd6f9443f883</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-04T14:57:30.125+08:00</INSERT_TIME><UPDATE_TIME>2019-03-04T14:57:30.125+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-04T14:57:30+08:00</ARCHIVE_DATE><JOB_GROUP>TBDRW</JOB_GROUP><JOB>TBDRW</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>随便来点</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>60cafcf3deb7458e90247bfc18aa846b</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-04T15:03:46.3125+08:00</INSERT_TIME><UPDATE_TIME>2019-03-04T15:03:46.3125+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-04T15:03:46+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>数量测试2</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>47a734fb88a14abd8ca0d82896d7d2f1</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-04T15:16:22.703125+08:00</INSERT_TIME><UPDATE_TIME>2019-03-04T15:16:22.703125+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-04T15:16:22+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>下次下发任务,是否情况此处内容?</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>1c109716f32140b88bec1e2e4622bcad</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-05T15:44:56.015625+08:00</INSERT_TIME><UPDATE_TIME>2019-03-05T15:44:56.015625+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-05T15:44:56+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>121212</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>9a6e271b22f94953bfc0cb55997ec477</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-04T15:03:31.921875+08:00</INSERT_TIME><UPDATE_TIME>2019-03-04T15:03:31.921875+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-04T15:03:31+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>数量测试1</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>a5b5763c85704fa2ab824c2a39649c6f</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-06T11:30:37.02593+08:00</INSERT_TIME><UPDATE_TIME>2019-03-06T11:30:37.02593+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-06T11:30:37+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>啊啊啊啊啊</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>e4899af22ac44fe8bec6085223fe218d</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-06T09:34:56.500608+08:00</INSERT_TIME><UPDATE_TIME>2019-03-06T09:34:56.500608+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-06T09:34:56+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>qqqqqqqqqq</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>f964b564b37b4e6f9cf70fa65802a0bc</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-06T09:37:35.601659+08:00</INSERT_TIME><UPDATE_TIME>2019-03-06T09:37:35.601659+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-06T09:37:35+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>zzzzzzzzzzzzz</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>5a2563ee706945168ae7837a931321f6</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-01T16:36:43.569723+08:00</INSERT_TIME><UPDATE_TIME>2019-03-01T16:36:43.569723+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-01T16:36:43+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>202020</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>e0dc6581344447e4b36e4d9d11f0134c</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-05T14:57:01.6875+08:00</INSERT_TIME><UPDATE_TIME>2019-03-05T14:57:01.6875+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-05T14:57:01+08:00</ARCHIVE_DATE><JOB_GROUP>LSSJ</JOB_GROUP><JOB>LSSJ</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>撤销看APP情况</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>5913ee4a0f404e09bd39054233a906a4</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-05T14:19:04.453125+08:00</INSERT_TIME><UPDATE_TIME>2019-03-05T14:19:04.453125+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-05T14:19:04+08:00</ARCHIVE_DATE><JOB_GROUP>TBDRW</JOB_GROUP><JOB>TBDRW</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>1111111111</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>d8621396e58c4c9fbf3d1db5db0708a9</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-06T09:34:09.736506+08:00</INSERT_TIME><UPDATE_TIME>2019-03-06T09:34:09.736506+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-06T09:34:09+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>eeeeeee</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>0dd8b3e4521a41b19477f5af64dd0033</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-04T09:49:41.596452+08:00</INSERT_TIME><UPDATE_TIME>2019-03-04T09:49:41.596452+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-04T09:49:41+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>6666</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>3e67f689e14e4539bdb3a46dde12814c</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-06T14:18:01.21875+08:00</INSERT_TIME><UPDATE_TIME>2019-03-06T14:18:01.21875+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-06T14:18:01+08:00</ARCHIVE_DATE><JOB_GROUP>TBDRW</JOB_GROUP><JOB>TBDRW</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>1417</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>73d9bc57540241a783028463de591e64</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-05T10:01:01.899396+08:00</INSERT_TIME><UPDATE_TIME>2019-03-05T10:01:01.899396+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-05T10:01:01+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LLLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>0010313</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>45ebd4cda4ae45e7ba0f945578c0fa4c</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-01T15:02:32.507773+08:00</INSERT_TIME><UPDATE_TIME>2019-03-01T15:02:32.507773+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-01T15:02:32+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>001</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION><BS_NOFLIGHTJOB_ALLOCATION><GUID>d8e40354480e42f3bb3c3a1bdd557d62</GUID><INSERT_OPERATOR>A070388</INSERT_OPERATOR><INSERT_TIME>2019-03-05T09:33:05.902947+08:00</INSERT_TIME><UPDATE_TIME>2019-03-05T09:33:05.902947+08:00</UPDATE_TIME><VALIDITY>1</VALIDITY><ARCHIVE_DATE>2019-03-05T09:33:05+08:00</ARCHIVE_DATE><JOB_GROUP>LSLJC</JOB_GROUP><JOB>LSLJC</JOB><STATUS>Allocation</STATUS><INITIATIVE>0</INITIATIVE><REQUIREMENT>qqqqqqqqqqqqqq</REQUIREMENT><OVERDUE>0</OVERDUE><ACCEPT_THRESHOLD>10</ACCEPT_THRESHOLD></BS_NOFLIGHTJOB_ALLOCATION>
</NewDataSet>
";}#endregion 样例数据#region DataSetConvertToByStr|通过XML(字符串形式)转成DataSet/// <summary>/// 通过XML(字符串形式)转成DataSet/// </summary>/// <param name="str"></param>/// <returns></returns>private DataSet DataSetConvertToByStr(string str){DataSet ds = new DataSet();using (StringReader xmlSR = new StringReader(str)){ds.ReadXml(xmlSR, XmlReadMode.InferTypedSchema); //忽视任何内联架构,从数据推断出强类型架构并加载数据。如果无法推断,则解释成字符串数据if (ds.Tables.Count > 0)return ds;elsereturn null;}}#endregion DataSetConvertToByStr|通过XML(字符串形式)转成DataSet/// <summary>  ///   /// </summary>  /// <param name="strMsg"></param>  /// <param name="succFlag"></param>  protected void SetResultTip(string strMsg, bool succFlag){if (succFlag){lbl_ResultTip.ForeColor = System.Drawing.Color.Blue;}else{lbl_ResultTip.ForeColor = System.Drawing.Color.Red;}lbl_ResultTip.Text = strMsg + "&nbsp;" + DateTime.Now.ToString("HH:mm:ss");}#region 保存/// <summary>/// 保存/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void btn_Ok_Click(object sender, EventArgs e){try{// btnOkClick();}catch (Exception err){SetResultTip(err.Message, false);}}#endregion 保存/// <summary>/// /// </summary>/// <param name="str"></param>/// <returns></returns>protected bool ListDcName(string str){if (str == null || str.Length == 0 || str.Trim().Length == 0){SetResultTip("请输入数据", false);return false;}DataSet ds = DataSetConvertToByStr(str.Trim());if (ds == null || ds.Tables.Count ==0){SetResultTip("数据不正确", false);return false;}DataTable dt = ds.Tables[0];StringBuilder theResult = new StringBuilder();foreach (DataColumn dc in dt.Columns){theResult.AppendLine(dc.ColumnName);}txt_Result.Visible = true;txt_Result.Text = theResult.ToString();SetResultTip("成功", true);return true;}/// <summary>/// /// </summary>/// <param name="str"></param>/// <returns></returns>protected bool DataRowCount(string str){if (str == null || str.Length == 0 || str.Trim().Length == 0){SetResultTip("请输入数据", false);return false;}DataSet ds = DataSetConvertToByStr(str.Trim());if (ds == null || ds.Tables.Count == 0){SetResultTip("数据不正确", false);return false;}DataTable dt = ds.Tables[0];lt_Result.Text = dt.Rows.Count.ToString();SetResultTip("成功", true);return true;}#region 源字段清单/// <summary>/// 源字段清单/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void btn_SourceDcName_Click(object sender, EventArgs e){try{lt_Result.Text = "";txt_Result.Visible = false;string str = txt_Source.Text.Trim();if (str.Length == 0){SetResultTip("请输入源数据", false);return;}ListDcName(str);}catch (Exception err){SetResultTip(err.Message, false);}}#endregion 源字段清单#region 目标字段清单/// <summary>/// 目标字段清单/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void btn_TargetDcName_Click(object sender, EventArgs e){try{lt_Result.Text = "";txt_Result.Visible = false;string str = txt_Target.Text.Trim();if (str.Length == 0){SetResultTip("请输入目标数据", false);return;}ListDcName(str);}catch (Exception err){SetResultTip(err.Message, false);}}#endregion 目标字段清单#region 源记录数/// <summary>/// 源记录数/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void btn_SourceRowCount_Click(object sender, EventArgs e){try{lt_Result.Text = "";txt_Result.Visible = false;string str = txt_Source.Text.Trim();if (str.Length == 0){SetResultTip("请输入源数据", false);return;}DataRowCount(str);}catch (Exception err){SetResultTip(err.Message, false);}}#endregion 源记录数#region 目标记录数/// <summary>/// 目标记录数/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void btn_TargetRowCount_Click(object sender, EventArgs e){try{lt_Result.Text = "";txt_Result.Visible = false;string str = txt_Target.Text.Trim();if (str.Length == 0){SetResultTip("请输入目标数据", false);return;}DataRowCount(str);}catch (Exception err){SetResultTip(err.Message, false);}}#endregion 目标记录数#region DataSetToHtmlTable:DataSet转成HTML的Table输出private const string P__SQLROWNUMBERVALUE = "P__SQLROWNUMBERVALUE";/// <summary>  /// DataSet转成HTML的Table输出 - DataSetToHtmlTable +  /// </summary>  /// <param name="ds"></param>   /// <returns></returns>  public string DataSetToHtmlTable(System.Data.DataSet ds){return DataSetToHtmlTable(ds, -98, true, null);}/// <summary>  /// DataSet转成HTML的Table输出 - DataSetToHtmlTable +  /// </summary>  /// <param name="ds"></param>   /// <param name="showDcNameList">显示的字段列表</param>/// <returns></returns>  public string DataSetToHtmlTable(System.Data.DataSet ds, List<string> showDcNameList){return DataSetToHtmlTable(ds, -98, true, showDcNameList);}/// <summary>  /// DataSet转成HTML的Table输出 - DataSetToHtmlTable +  /// </summary>  /// <param name="ds"></param>  /// <param name="needConvertHtml">是否需要转移Html内容</param>  /// <returns></returns>  public string DataSetToHtmlTable(System.Data.DataSet ds, bool needConvertHtml){return DataSetToHtmlTable(ds, -98, needConvertHtml, null);}/// <summary>  /// DataSet转成HTML的Table输出 - DataSetToHtmlTable +  /// </summary>  /// <param name="ds"></param>  /// <param name="widthValue">表格宽度|如:-98=98%;120=120px</param>  /// <param name="needConvertHtml">是否需要转移Html内容</param>  /// <param name="showDcNameList">显示的字段列表</param>/// <returns></returns>  public string DataSetToHtmlTable(System.Data.DataSet ds, int widthValue, bool needConvertHtml,List<string> showDcNameList){if (ds == null || ds.Tables.Count == 0){throw new Exception("方法:"+ System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.FullName+ " "+ System.Reflection.MethodBase.GetCurrentMethod().ToString()+ " 发生异常:"+ "传入参数:DataSet ds为null。");}string widthStyle = "";if (widthValue > 0){widthStyle = " width:" + widthValue.ToString() + "px;";}else if (widthValue < 0){widthStyle = " width:" + (-widthValue).ToString() + "%;";}System.Data.DataTable dt = ds.Tables[0];StringBuilder theResult = new StringBuilder();theResult.Append(@"<table style=""background-color: #CDCDCD; font-family: 仿宋;" + widthStyle + @""" align=""center"" border=""0"" cellpadding=""1"" cellspacing=""1"">");int rowIndex = 0;bool noAllDcFlag = false;if (showDcNameList != null && showDcNameList.Count > 0){noAllDcFlag = true;}string strTmp = null;string columnName = null;object oValue = null;DateTime dtValue = DateTime.MinValue;if (needConvertHtml){theResult.Append(@"<tr style=""background-color: #FFFFFF;"">");theResult.Append(@"<td style=""background-color: #FFFFFF; font-size: 18px; font-weight: bold; font-family: 宋体; line-height: 20pt; vertical-align: middle; line-height: 20pt; text-align: center;"" align=""center"" height=""30px"">");theResult.Append("序号");theResult.Append("</td>");foreach (System.Data.DataColumn dc in dt.Columns){columnName = dc.ColumnName;if (columnName.Trim().ToUpper() == P__SQLROWNUMBERVALUE){continue;}if (noAllDcFlag){if (!showDcNameList.Contains(columnName.ToLower()))continue;}strTmp = columnName;strTmp = strTmp.Replace("<", "&lt;").Replace(">", "&gt;");theResult.Append(@"<td style=""background-color: #FFFFFF; font-size: 18px; font-weight: bold; font-family: 宋体; line-height: 20pt; vertical-align: middle; line-height: 20pt; text-align: center;"" align=""center"" height=""30px"">");theResult.Append(strTmp);theResult.Append("</td>");}theResult.Append("</tr>");foreach (System.Data.DataRow dr in dt.Rows){++rowIndex;theResult.Append(@"<tr style=""background-color: #FFFFFF;"">");theResult.Append(@"<td style=""background-color: #FFFFFF; font-size: 14px; font-family: 宋体; line-height: 20pt; vertical-align: middle; line-height: 20pt; padding-left: 5px;"" align=""center"" height=""30px"">");theResult.Append(rowIndex.ToString());theResult.Append("</td>");foreach (System.Data.DataColumn dc in dt.Columns){columnName = dc.ColumnName;if (columnName.Trim().ToUpper() == P__SQLROWNUMBERVALUE){continue;}if (noAllDcFlag){if (!showDcNameList.Contains(columnName.ToLower()))continue;}oValue = dr[dc.ColumnName];if (oValue == null || oValue == DBNull.Value){strTmp = "";}else{if (oValue is DateTime){dtValue = (DateTime)oValue;if (dtValue.Date == dtValue){strTmp = dtValue.ToString("yyyy-MM-dd");}else{strTmp = dtValue.ToString("yyyy-MM-dd HH:mm:ss");}}else{strTmp = oValue.ToString();}}strTmp = strTmp.Replace("<", "&lt;").Replace(">", "&gt;");theResult.Append(@"<td style=""background-color: #FFFFFF; font-size: 14px; font-family: 宋体; line-height: 20pt; vertical-align: middle; line-height: 20pt; padding-left: 5px;"" align=""center"" height=""30px"">");theResult.Append(strTmp);theResult.Append("</td>");}theResult.Append("</tr>");}}else{theResult.Append(@"<tr style=""background-color: #FFFFFF;"">");theResult.Append(@"<td style=""background-color: #FFFFFF; font-size: 18px; font-weight: bold; font-family: 宋体; line-height: 20pt; vertical-align: middle; line-height: 20pt; text-align: center;"" align=""center"" height=""30px"">");theResult.Append("序号");theResult.Append("</td>");foreach (System.Data.DataColumn dc in dt.Columns){columnName = dc.ColumnName;if (columnName.Trim().ToUpper() == P__SQLROWNUMBERVALUE){continue;}if (noAllDcFlag){if (!showDcNameList.Contains(columnName.ToLower()))continue;}theResult.Append(@"<td style=""background-color: #FFFFFF; font-size: 18px; font-weight: bold; font-family: 宋体; line-height: 20pt; vertical-align: middle; line-height: 20pt; text-align: center;"" align=""center"" height=""30px"">");theResult.Append(dc.ColumnName);theResult.Append("</td>");}theResult.Append("</tr>");foreach (System.Data.DataRow dr in dt.Rows){++rowIndex;theResult.Append(@"<tr style=""background-color: #FFFFFF;"">");theResult.Append(@"<td style=""background-color: #FFFFFF; font-size: 14px; font-family: 宋体; line-height: 20pt; vertical-align: middle; line-height: 20pt; padding-left: 5px;"" align=""center"" height=""30px"">");theResult.Append(rowIndex.ToString());theResult.Append("</td>");foreach (System.Data.DataColumn dc in dt.Columns){columnName = dc.ColumnName;if (columnName.Trim().ToUpper() == P__SQLROWNUMBERVALUE){continue;}if (noAllDcFlag){if (!showDcNameList.Contains(columnName.ToLower()))continue;}oValue = dr[dc.ColumnName];if (oValue == null || oValue == DBNull.Value){strTmp = "";}else{if (oValue is DateTime){dtValue = (DateTime)oValue;if (dtValue.Date == dtValue){strTmp = dtValue.ToString("yyyy-MM-dd");}else{strTmp = dtValue.ToString("yyyy-MM-dd HH:mm:ss");}}else{strTmp = oValue.ToString();}}theResult.Append(@"<td style=""background-color: #FFFFFF; font-size: 14px; font-family: 宋体; line-height: 20pt; vertical-align: middle; line-height: 20pt; padding-left: 5px;"" align=""center"" height=""30px"">");theResult.Append(strTmp);theResult.Append("</td>");}theResult.Append("</tr>");}}theResult.Append("</table>");return theResult.ToString();}#endregion DataSetToHtmlTable:DataSet转成HTML的Table输出  #region StrToListStr:多行字符串转成List-string的值输出/// <summary>/// 多行字符串转成List-string的值输出/// </summary>/// <param name="str">字符串</param>/// <param name="toLowerFlag">是否转小写</param>/// <returns></returns>public List<string> StrToListStr(string str,bool toLowerFlag){List<string> theResult = new List<string>();if (str == null)return theResult;str = str.Trim();if (str.Length == 0)return theResult;string[] sA = str.Split('\n');string strTmp = null;foreach (string s in sA){if (s == null)continue;strTmp = s.Trim();if (strTmp.Length == 0)continue;if (toLowerFlag)strTmp = strTmp.ToLower();if (theResult.Contains(strTmp))continue;theResult.Add(strTmp);}return theResult;}#endregion StrToListStr:多行字符串转成List-string的值输出/// <summary>  /// DataSet转成HTML的Table输出 - DataSetToHtmlTable +  /// </summary>  /// <param name="ds"></param>  /// <param name="widthValue">表格宽度|如:-98=98%;120=120px</param>  /// <param name="needConvertHtml">是否需要转移Html内容</param>  /// <param name="showDcNameList">显示的字段列表</param>/// <returns></returns>  public string DataSetToHtmlTableForNoEqual(System.Data.DataSet ds, int widthValue,   List<string> showDcNameList){if (ds == null || ds.Tables.Count == 0){throw new Exception("方法:"+ System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.FullName+ " "+ System.Reflection.MethodBase.GetCurrentMethod().ToString()+ " 发生异常:"+ "传入参数:DataSet ds为null。");}string widthStyle = "";if (widthValue > 0){widthStyle = " width:" + widthValue.ToString() + "px;";}else if (widthValue < 0){widthStyle = " width:" + (-widthValue).ToString() + "%;";}System.Data.DataTable dt = ds.Tables[0];int rowCount = dt.Rows.Count;if (rowCount % 2 == 1){return "数据错误,数据应该是2的倍数";}StringBuilder theResult = new StringBuilder();theResult.Append(@"<table style=""background-color: #CDCDCD; font-family: 仿宋;" + widthStyle + @""" align=""center"" border=""0"" cellpadding=""1"" cellspacing=""1"">");int rowIndex = 0;bool noAllDcFlag = false;if (showDcNameList != null && showDcNameList.Count > 0){noAllDcFlag = true;}string strTmp = null;string columnName = null;object oValue = null;DateTime dtValue = DateTime.MinValue;DataRow drOne = null;DataRow drTwo = null;bool compareFlag = false;int rowSpan = 1;bool needConvertHtml = true;if (needConvertHtml){theResult.Append(@"<tr style=""background-color: #FFFFFF;"">");theResult.Append(@"<td style=""background-color: #FFFFFF; font-size: 18px; font-weight: bold; font-family: 宋体; line-height: 20pt; vertical-align: middle; line-height: 20pt; text-align: center;"" align=""center"" height=""30px"">");theResult.Append("序号");theResult.Append("</td>");foreach (System.Data.DataColumn dc in dt.Columns){columnName = dc.ColumnName;if (columnName.Trim().ToUpper() == P__SQLROWNUMBERVALUE){continue;}if (noAllDcFlag){if (!showDcNameList.Contains(columnName.ToLower()))continue;}strTmp = columnName;strTmp = strTmp.Replace("<", "&lt;").Replace(">", "&gt;");theResult.Append(@"<td style=""background-color: #FFFFFF; font-size: 18px; font-weight: bold; font-family: 宋体; line-height: 20pt; vertical-align: middle; line-height: 20pt; text-align: center;"" align=""center"" height=""30px"">");theResult.Append(strTmp);theResult.Append("</td>");}theResult.Append("</tr>");for(int i = 0; i <rowCount;i=i+2){drOne = dt.Rows[i];drTwo = dt.Rows[i + 1];++rowIndex;theResult.Append(@"<tr style=""background-color: #FFFFFF;"">");theResult.Append(@"<td rowspan=""2"" style=""background-color: #FFFFFF; font-size: 14px; font-family: 宋体; line-height: 20pt; vertical-align: middle; line-height: 20pt; padding-left: 5px;"" align=""center"" height=""30px"">");theResult.Append(rowIndex.ToString());theResult.Append("</td>");foreach (System.Data.DataColumn dc in dt.Columns){columnName = dc.ColumnName;if (columnName.Trim().ToUpper() == P__SQLROWNUMBERVALUE){continue;}if (noAllDcFlag){if (!showDcNameList.Contains(columnName.ToLower()))continue;}compareFlag = ObjCompare(drOne[columnName], drTwo[columnName]);if (compareFlag){rowSpan = 2;}else{rowSpan = 1;}oValue = drOne[columnName];if (oValue == null || oValue == DBNull.Value){strTmp = "";}else{if (oValue is DateTime){dtValue = (DateTime)oValue;if (dtValue.Date == dtValue){strTmp = dtValue.ToString("yyyy-MM-dd");}else{strTmp = dtValue.ToString("yyyy-MM-dd HH:mm:ss");}}else{strTmp = oValue.ToString();}}strTmp = strTmp.Replace("<", "&lt;").Replace(">", "&gt;");theResult.Append(@"<td rowspan=""" + rowSpan.ToString() + @""" style=""background-color: #FFFFFF; font-size: 14px; font-family: 宋体; line-height: 20pt; vertical-align: middle; line-height: 20pt; padding-left: 5px;"" align=""center"" height=""30px"">");theResult.Append(strTmp);theResult.Append("</td>");}theResult.Append("</tr>");theResult.Append(@"<tr style=""background-color: #FFFFFF;"">");foreach (System.Data.DataColumn dc in dt.Columns){columnName = dc.ColumnName;if (columnName.Trim().ToUpper() == P__SQLROWNUMBERVALUE){continue;}if (noAllDcFlag){if (!showDcNameList.Contains(columnName.ToLower()))continue;}compareFlag = ObjCompare(drOne[columnName], drTwo[columnName]);if (compareFlag){continue;}rowSpan = 1;oValue = drTwo[columnName];if (oValue == null || oValue == DBNull.Value){strTmp = "";}else{if (oValue is DateTime){dtValue = (DateTime)oValue;if (dtValue.Date == dtValue){strTmp = dtValue.ToString("yyyy-MM-dd");}else{strTmp = dtValue.ToString("yyyy-MM-dd HH:mm:ss");}}else{strTmp = oValue.ToString();}}strTmp = strTmp.Replace("<", "&lt;").Replace(">", "&gt;");theResult.Append(@"<td rowspan=""" + rowSpan.ToString() + @""" style=""background-color: #FFFFFF; font-size: 14px; font-family: 宋体; line-height: 20pt; vertical-align: middle; line-height: 20pt; padding-left: 5px;"" align=""center"" height=""30px"">");theResult.Append(strTmp);theResult.Append("</td>");}theResult.Append("</tr>");}}theResult.Append("</table>");return theResult.ToString();}/// <summary>/// /// </summary>/// <param name="str"></param>/// <returns></returns>protected bool ShowHtmlData(string str){if (str == null || str.Length == 0 || str.Trim().Length == 0){SetResultTip("请输入数据", false);return false;}DataSet ds = DataSetConvertToByStr(str.Trim());if (ds == null || ds.Tables.Count == 0){SetResultTip("数据不正确", false);return false;}string dcName = txt_DcName.Text.Trim();List<string> showDcNameList = null;if (dcName.Length > 0){showDcNameList = StrToListStr(dcName, true);}string strHtml = DataSetToHtmlTable(ds, showDcNameList);lt_Result.Text = strHtml;SetResultTip("成功", true);return true;}protected void btn_TargetData_Click(object sender, EventArgs e){try{lt_Result.Text = "";txt_Result.Visible = false;string str = txt_Target.Text.Trim();if (str.Length == 0){SetResultTip("请输入目标数据", false);return;}ShowHtmlData(str);}catch (Exception err){SetResultTip(err.Message, false);}}/// <summary>/// /// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void btn_SourceData_Click(object sender, EventArgs e){try{lt_Result.Text = "";txt_Result.Visible = false;string str = txt_Source.Text.Trim();if (str.Length == 0){SetResultTip("请输入源数据", false);return;}ShowHtmlData(str);}catch (Exception err){SetResultTip(err.Message, false);}}public enum EmOper{/// <summary>/// 源多的数据/// </summary>源多的数据 = 1,/// <summary>/// 目标多的数据/// </summary>目标多的数据,/// <summary>/// 相同的数据/// </summary>相同的数据,/// <summary>/// 不相同的数据/// </summary>不相同的数据,/// <summary>/// 字段比较/// </summary>字段比较}/// <summary>/// /// </summary>/// <param name="sourceFlag"></param>/// <param name="dt"></param>/// <param name="sA"></param>/// <returns></returns>public bool DataTableContainColumns(bool sourceFlag,DataTable dt,List<string> sA){if (sA == null)return true;string strTmp = null;foreach (string s in sA){if (s == null || s.Length == 0)continue;strTmp = s.Trim();if(strTmp.Length ==0)continue;if (!dt.Columns.Contains(strTmp)){if (sourceFlag){SetResultTip("源不包含" + strTmp + "字段", false);}else{SetResultTip("目标不包含" + strTmp + "字段", false);}return false;}}return true;}/// <summary>/// /// </summary>/// <param name="sA"></param>/// <returns></returns>public List<string> StrArrayToStrList(string[] sA){List<string> theResult = new List<string>();if (sA == null || sA.Length == 0)return theResult;string strTmp = null;foreach (string s in sA){if (s == null)continue;strTmp = s.Trim();if (theResult.Contains(strTmp))continue;theResult.Add(strTmp);}return theResult;}/// <summary>/// 不考虑多对一的情况/// </summary>/// <param name="drData"></param>/// <param name="dt"></param>/// <param name="pkList"></param>/// <returns></returns>protected DataRow DataRowFind(DataRow drData, DataTable dt, List<string> pkList){bool findFlag = false;bool compareFlag = false;foreach (DataRow dr in dt.Rows){findFlag = true;foreach (string pk in pkList){compareFlag = ObjCompare(dr[pk], drData[pk]);if(!compareFlag){findFlag = false;break;}}if (findFlag){return dr;}}return null;}/// <summary>/// /// </summary>/// <param name="objOne"></param>/// <param name="objTwo"></param>/// <returns></returns>protected bool ObjCompare(object objOne, object objTwo){bool oneIsEmpty = false;bool twoIsEmpty = false;if (objOne == null || objOne == DBNull.Value || objOne.ToString().Length == 0){oneIsEmpty = true;}if (objTwo == null || objTwo == DBNull.Value || objTwo.ToString().Length == 0){twoIsEmpty = true;}if (oneIsEmpty){if (twoIsEmpty)return true;elsereturn false;}if (twoIsEmpty){if (oneIsEmpty)return true;elsereturn false;}string strOne = objOne.ToString();string strTwo = objTwo.ToString();if (strOne == strTwo)return true;return false;}/// <summary>/// /// </summary>/// <param name="drOne"></param>/// <param name="drTwo"></param>/// <param name="dcList"></param>/// <returns></returns>protected bool DataRowCompare(DataRow drOne, DataRow drTwo, List<string> dcList){bool noAllDcList = false;if (dcList != null && dcList.Count > 0){noAllDcList = true;}bool compareFlag = false;string dcName = null;DataTable dtOne = drOne.Table;DataTable dtTwo = drTwo.Table;if (noAllDcList){foreach (string s in dcList){dcName = s;if (dcName == null || dcName.Length == 0)continue;dcName = dcName.Trim();if (dcName.Length == 0)continue;if (!dtOne.Columns.Contains(dcName))return false;if (!dtTwo.Columns.Contains(dcName))return false;compareFlag = ObjCompare(drOne[dcName], drTwo[dcName]);if (!compareFlag)return false;}}else{foreach (DataColumn dc in dtOne.Columns){dcName = dc.ColumnName;if (!dtTwo.Columns.Contains(dcName))return false;compareFlag = ObjCompare(drOne[dcName], drTwo[dcName]);if (!compareFlag)return false;}}return true;}/// <summary>/// /// </summary>/// <param name="em"></param>/// <returns></returns>public bool DataCompareOper(EmOper em){string strSource = txt_Source.Text.Trim();if (strSource.Length == 0){SetResultTip("请输入源数据", false);return false;}string strTarget = txt_Target.Text.Trim();if (strTarget.Length == 0){SetResultTip("请输入目标数据", false);return false;}string pkName = txt_PkName.Text.Trim();if (pkName.Length == 0){SetResultTip("请输入比较关键字", false);return false;}string[] pkA = pkName.Split('|');List<string> pkList = StrArrayToStrList(pkA);string dcName = txt_DcName.Text.Trim();List<string> dcList = null;if (dcName.Length > 0){dcList = StrToListStr(dcName, false);}DataSet dsSource = DataSetConvertToByStr(strSource);DataSet dsTarget = DataSetConvertToByStr(strTarget);if (dsSource == null || dsSource.Tables.Count == 0 || dsSource.Tables[0].Rows.Count == 0){SetResultTip("源数据为空", false);return false;}if (dsTarget == null || dsTarget.Tables.Count == 0 || dsTarget.Tables[0].Rows.Count == 0){SetResultTip("目标数据为空", false);return false;}DataTable dtSource = dsSource.Tables[0];DataTable dtTarget = dsTarget.Tables[0];bool resultFlag = DataTableContainColumns(true, dtSource, pkList);if (!resultFlag)return false;resultFlag = DataTableContainColumns(false, dtTarget, pkList);if (!resultFlag)return false;resultFlag = DataTableContainColumns(true, dtSource, dcList);if (!resultFlag)return false;resultFlag = DataTableContainColumns(false, dtTarget, dcList);if (!resultFlag)return false;DataSet dsResult = new DataSet();DataTable dtResult = null;DataRow drFind = null;bool compareFlag = false;switch (em){case EmOper.源多的数据:dtResult = dtSource.Clone();foreach (DataRow drS in dtSource.Rows){drFind = DataRowFind(drS, dtTarget, pkList);if (drFind == null){dtResult.ImportRow(drS);}}if (dtResult.Rows.Count == 0){lt_Result.Text = "没有记录";return true;}dsResult.Tables.Add(dtResult);lt_Result.Text = DataSetToHtmlTable(dsResult, dcList);SetResultTip(em.ToString() + "操作成功", true);return true;case EmOper.目标多的数据:dtResult = dtTarget.Clone();foreach (DataRow drS in dtTarget.Rows){drFind = DataRowFind(drS, dtSource, pkList);if (drFind == null){dtResult.ImportRow(drS);}}if (dtResult.Rows.Count == 0){lt_Result.Text = "没有记录";return true;}dsResult.Tables.Add(dtResult);lt_Result.Text = DataSetToHtmlTable(dsResult, dcList);SetResultTip(em.ToString() + "操作成功", true);return true;case EmOper.相同的数据:dtResult = dtSource.Clone();foreach (DataRow drS in dtSource.Rows){drFind = DataRowFind(drS, dtTarget, pkList);if (drFind == null){continue;}compareFlag = DataRowCompare(drFind, drS, dcList);if (compareFlag){dtResult.ImportRow(drS);}}if (dtResult.Rows.Count == 0){lt_Result.Text = "没有记录";return true;}dsResult.Tables.Add(dtResult);lt_Result.Text = DataSetToHtmlTable(dsResult, dcList);SetResultTip(em.ToString() + "操作成功", true);return true;case EmOper.不相同的数据:dtResult = dtSource.Clone();foreach (DataRow drS in dtSource.Rows){drFind = DataRowFind(drS, dtTarget, pkList);if (drFind == null){continue;}compareFlag = DataRowCompare(drFind, drS, dcList);if (!compareFlag){dtResult.ImportRow(drS);dtResult.ImportRow(drFind);}}if (dtResult.Rows.Count == 0){lt_Result.Text = "没有记录";return true;}dsResult.Tables.Add(dtResult);lt_Result.Text =DataSetToHtmlTableForNoEqual(dsResult, -99, dcList);SetResultTip(em.ToString() + "操作成功", true);return true;case EmOper.字段比较:StringBuilder sourceMoreSb = new StringBuilder();StringBuilder targetMoreSb = new StringBuilder();foreach (DataColumn dc in dtSource.Columns){if (!dtTarget.Columns.Contains(dc.ColumnName)){sourceMoreSb.AppendLine(dc.ColumnName);}}foreach (DataColumn dc in dtTarget.Columns){if (!dtSource.Columns.Contains(dc.ColumnName)){targetMoreSb.AppendLine(dc.ColumnName);}}StringBuilder compareResultSb = new StringBuilder();string strCompareTmp = sourceMoreSb.ToString();if (strCompareTmp.Length > 0){compareResultSb.AppendLine("源多的字段:");compareResultSb.AppendLine(strCompareTmp);}strCompareTmp = targetMoreSb.ToString();if (strCompareTmp.Length > 0){compareResultSb.AppendLine("目标多的字段:");compareResultSb.AppendLine(strCompareTmp);}strCompareTmp = compareResultSb.ToString();if (strCompareTmp.Length > 0){txt_Result.Visible = true;txt_Result.Text = strCompareTmp;}else{lt_Result.Text = em.ToString()+"相同";}SetResultTip(em.ToString() + "操作成功", true);return true;default:SetResultTip(em.ToString() + "未实现", false);return false;} }/// <summary>/// 不相同的数据/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void btn_NoEqualData_Click(object sender, EventArgs e){try{lt_Result.Text = "";txt_Result.Visible = false;DataCompareOper(EmOper.不相同的数据);}catch (Exception err){SetResultTip(err.Message, false);}}/// <summary>/// 源多的数据/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void btn_SourceMore_Click(object sender, EventArgs e){try{lt_Result.Text = "";txt_Result.Visible = false;DataCompareOper(EmOper.源多的数据);}catch (Exception err){SetResultTip(err.Message, false);}}/// <summary>/// 相同的数据/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void btn_EqualData_Click(object sender, EventArgs e){try{lt_Result.Text = "";txt_Result.Visible = false;DataCompareOper(EmOper.相同的数据);}catch (Exception err){SetResultTip(err.Message, false);}}/// <summary>/// 目标多的数据/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void btn_TargetMore_Click(object sender, EventArgs e){try{lt_Result.Text = "";txt_Result.Visible = false;DataCompareOper(EmOper.目标多的数据);}catch (Exception err){SetResultTip(err.Message, false);}}/// <summary>/// 字段是否相同/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void btn_DcCompare_Click(object sender, EventArgs e){try{lt_Result.Text = "";txt_Result.Visible = false;DataCompareOper(EmOper.字段比较);}catch (Exception err){SetResultTip(err.Message, false);}}protected void Page_Load(object sender, EventArgs e){}
}

通过数据表的DataSet输出XML做数据比对相关推荐

  1. 应用容灾中,MySQL数据表是否需要跨云同步?

    简介: 容灾系统的重要目标在于保证系统数据和服务的"连续性".当系统发生故障时,容灾系统能够快速恢复服务和保证数据的有效性.为了防止天灾人祸.不可抗力,在同城或异地建立对应的IT系 ...

  2. excel导入mysql命令行_使用命令行将Excel数据表导入Mysql中的方法小结

    从Excel数据表导入MySQL,已经做过好几次了,但每次都会碰到各种问题:invalid utf8 character string, data too long, ...,浪费了不少时间 为了提高 ...

  3. 12306抢票系统——ER图及数据表

    12306自动抢票系统--ER图及数据表 1. 抢票系统ER图 数据表 2.抢票系统数据结构表 (1)列车表 Trains table 字段名 数据类型 说明 是否为主键 Train_id strin ...

  4. web.xml.jsf_使用JSF 2.2功能来开发可滚动,可延迟加载的Ajax数据表

    web.xml.jsf 这次,我想与您分享我最近从JSF 2.2功能中学到的知识. 为此,我决定创建一个简单的ajax,可滚动,延迟加载的数据表. 请注意, 绝不这是相当大的库如Primefaces ...

  5. 根据递归定义的数据表循环生成xml

    数据库有数据表tbDept: ID ParentID DeptName LevelID RoleID 1 0 软体研发处 0 0 2 1 软体研发一部 0 0 3 1 软体研发二部 0 0 4 1 软 ...

  6. 动态创建数据表php,PHP实现动态添加XML中数据的方法

    本文实例讲述了PHP实现动态添加XML中数据的方法.分享给大家供大家参考,具体如下: 前面简单讲述了xml文档的创建,这里继续讨论xml中数据的动态添加: 一. 代码 class Message_XM ...

  7. 从数据库读取数据后输出XML

    开始是用DataSet.GetXml()来输出XML,不过数据库中的数据有一个字段是XML类型的,而用DataSet.GetXmL()的话,那个XML类型的字段里的值不会被当成XML来输出,而是当作值 ...

  8. 以对象的方式来访问xml数据表(二)

    为什么要以对象的方式来访问xml数据表? 还记得,自己是在一次完成师兄布置的任务时接触到了xml,那时候需要用xml来作为数据文件,保存一个简单的图书管理系统的数据.于是就知道了,可以用xml文件来保 ...

  9. 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。...

    题目描述 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出. 输入描述: 先输入键值对的个数 然后输入成对的index和value ...

最新文章

  1. 在vue中使用Element-UI
  2. Android模拟器安装程序及上传音乐并播放
  3. 纯CSS实现下拉菜单及下拉容器等(纯CSS实现导航条及导航下拉容器)
  4. 算法提高课-搜索-DFS之连通性模型-AcWing 1112. 迷宫:dfs和bfs两种解法
  5. 在 Blazor WebAssembly 中使用 gRPC-Web
  6. 容器编排技术 -- Kubernetes 设计理念
  7. 使SWT/JFace支持跨平台
  8. python2中文乱码
  9. ad10搜索快捷键_PCB工程师必备:AD常用快捷键总结,超级实用
  10. ubuntu16.04 设置动态ip和静态ip及route命令的使用
  11. 多糖类水凝胶构建制备介绍(瑞禧多糖水凝胶简述)
  12. 微软邮箱smtp服务器,微软hotmail免费邮箱申请(5G邮箱容量) 支持pop3、smtp
  13. comb函数在C语言中,always_comb和always @(*)
  14. LeetCode:数组刷题(17道经典题目)
  15. 网页设计之CSS3精要
  16. 问题解答:No active profile set, falling back to default profiles: default
  17. socket文件传输
  18. 腾讯QQ的验证码,很黄很暴力
  19. 【原创】【数论】质数判断方法汇总及证明(上-费马素性检测与卡迈克尔数)
  20. URP Bokeh DOF 分析

热门文章

  1. 基于ATmega8的测速计设计
  2. 给自己5个月,月薪1万唾手可得!
  3. 图像透视变换原理及实现
  4. CTF-show-爆破
  5. 首届中国网络文学论坛
  6. 换了ThinkPad IBM T43
  7. spring boot实现txt下载
  8. SRPG游戏开发(三十九)第九章 战斗系统 - 一 战斗属性(Combat Properties)
  9. ssm+JSP计算机毕业设计游戏网站设计n8q96【源码、程序、数据库、部署】
  10. 华为p10手机安装linux,matebookD安装linux系统总结