簡體   English   中英

Xml文件從gridview導出后顯示不正確的時間數據

[英]Xml file show incorrect time data after exported it from gridview

我有一個顯示某些信息的gridview。 這些信息之一是時間數據,例如:19:40:00.0000000。 當我嘗試使用WriteXml將gridview導出到xml文件時,發現我的時間數據不正確,看起來像是PT7H50M。

->我的時間數據:將gridview中的19:40:00.0000000導出到xml文件后,轉換為:PT7H50M為什么又如何解決此問題?

這是我的gridview中的時間數據: 我的時間數據在GridView中

這是xml文件中的樣子:

在此處輸入圖片說明

這是導出代碼:

DataTable Rdt =新的DataTable(); DataSet Rds = new DataSet();

                    Rdt = (DataTable)GV_Report.DataSource;
                    Rds.Tables.Add(Rdt.Copy());

                    Rds.WriteXml(@"c:\Reporting\Work_Hours_Report.xml", System.Data.XmlWriteMode.IgnoreSchema);

                    XmlDocument doc = new XmlDocument();
                    XmlWriterSettings settings = new XmlWriterSettings();
                    settings.Indent = true;
                    XmlWriter writer = XmlWriter.Create(@"c:\Reporting\ReportType.xml", settings);
                    writer.WriteStartDocument();
                    writer.WriteComment("This file is generated by the program...Please do not change this file!!");
                    writer.WriteStartElement("ReportBut");
                    writer.WriteElementString("ButType", "Work_Hours_Report");
                    writer.WriteEndElement();
                    writer.WriteEndDocument();
                    writer.Flush();
                    writer.Close();

我試圖通過向每個選定的列添加別名來編輯我的SQL語句,但是不幸的是,它沒有任何改進:

select CAST(DATEADD(MILLISECOND,SUM(DATEDIFF(MILLISECOND,0,CAST(ISNULL([Total_H],'00:00:00') AS DATETIME))),0) AS TIME) as '1',sum([HTotal]) as '2',sum([MTotal]) as '3',CAST(DATEADD(MILLISECOND,SUM(DATEDIFF(MILLISECOND,0,CAST(ISNULL([PH_Total],'00:00:00') AS DATETIME))),0) AS TIME) as '4',sum([PH]) as '5',sum([PM]) as '6',CAST(DATEADD(MILLISECOND,SUM(DATEDIFF(MILLISECOND,0,CAST(ISNULL([AH_Total],'00:00:00') AS DATETIME))),0) AS TIME) as '7',sum([AH]) as '8',sum([AM]) as '9'  FROM [QAMNI].[dbo].[tbl_WorkHours_Details]  where [Date] between '" + DF + "' and '" + DT + "' and [C_ID] ='" + txt_C_ID.Text + "'

根據@ Flynn1179先生的進度

我將XmlWriteMode從IgnoreSchema更改為WriteSchema,結果是正確的,沒有任何xsd:dayTimeDuration表示以天,小時,分鍾和秒為單位的持續時間。 xsd:dayTimeDuration的格式為PnDTnHnMnS,與我的報告文件中的一樣,更改后,我得到的時間與從數據庫中選擇的時間完全相同,而格式無任何更改。 謝謝大家的幫助。 這是將XmlWriteMode從IgnoreSchema更改為WriteSchema之后的XML文件:

在此處輸入圖片說明

它仍然顯示為xsd格式,但是當我使用Crystal Report將其打印出給最終用戶時,它為我提供了正確的時間格式為(“ hh:mm:ss”):

在此處輸入圖片說明

這就是我在代碼中所做的更改:(僅更改XmlWriteMode)

 Rds.WriteXml(@"c:\Reporting\WorkHours_Report.xml", System.Data.XmlWriteMode.WriteSchema);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM