XML-файл показывает неверные данные о времени после экспорта из gridview

У меня есть сетка, которая отображает некоторую информацию. Одной из этих данных являются данные времени, такие как: 19:40:00.0000000. Когда я попытался экспортировать свой gridview в xml-файл, используя WriteXml, я нашел неверные данные для своего времени, это выглядит так: PT7H50M.

-> Мои данные времени: 19: 40: 00.0000000 в виде сетки преобразуются в: PT7H50M после экспорта в файл XML. Почему и как я могу решить эту проблему?

это данные о времени в моем gridview: Мои данные о времени в gridview

Вот как это выглядит в XML-файле:

введите описание изображения здесь

Это код экспорта:

DataTable Rdt = new 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 + "'

1 ответ

Решение

По авансу мистера @ Flynn1179

Я изменил XmlWriteMode с IgnoreSchema на WriteSchema, и результат был правильным без какого-либо значения xsd: dayTimeDuration представляет продолжительность времени, выраженную в количестве дней, часов, минут и секунд. Формат xsd: dayTimeDuration - это PnDTnHnMnS, как и в моем файле отчетов. После его изменения я получаю время точно так же, как выбираю из своей базы данных без каких-либо изменений в формате. Спасибо всем вам за помощь. Это мой XML-файл после изменения XmlWriteMode с IgnoreSchema на WriteSchema:

введите описание изображения здесь

Он по-прежнему отображается в формате xsd, но когда я распечатываю его для конечного пользователя, используя отчет Crystal, он дает мне правильный формат времени как ("чч: мм: сс"):

введите описание изображения здесь

Это то, что я изменяю в своем коде:(изменяя только XmlWriteMode)

 Rds.WriteXml(@"c:\Reporting\WorkHours_Report.xml", System.Data.XmlWriteMode.WriteSchema);
Другие вопросы по тегам