Чтение из xml и объединение таблиц в одной строке - PullRequest
0 голосов
/ 11 мая 2018

Я использую код ниже для того, чтобы взять каждый элемент из моего xml в новом окне внутри datagridview. Проблема, которая показывает каждую таблицу отдельно. Мне нужно взять их все таблицы рядом в строках samme.

См. Изображение 1 Изображение
Мне нужно взять что-то подобное Image2

Вот что я пытаюсь сделать.

 public void ShowData(System.Data.DataTable t)
    {
        Form f = new Form();
        f.Controls.Add(new DataGridView { Dock = DockStyle.Fill, DataSource = t });
        f.Show();
    }

    private void ToExcel_Click(object sender, EventArgs e)
    {
        string path =@"c:\mydataset.xml";
        DataSet ds = new DataSet();
        ds.ReadXml(path);

        foreach (System.Data.DataTable t in ds.Tables)
        {
            ShowData(t);
        }
}

Должен ли я объединить таблицу внутри таблицы данных? Они нужны мне рядом, а не друг под другом.

Ответы [ 2 ]

0 голосов
/ 11 мая 2018
var dt = new DataTable();

foreach (DataTable t in ds.Tables)
{
    foreach (DataColumn c in t.Columns)
    {
        dt.Columns.Add(c.ColumnName, c.DataType);
    }
}

foreach (DataRow r in ds.Tables[0].Rows)
{
    var row = dt.NewRow();
    dt.Rows.Add(row);
}

for (int i = 0; i < dt.Rows.Count; i++)
{
    foreach (DataTable t in ds.Tables)
    {
        foreach (DataColumn c in t.Columns)
        {
            dt.Rows[i][c.ColumnName] = t.Rows[i][c.ColumnName];
        }
    }
}

Внимание!Количество строк во всех таблицах должно совпадать.Таблицы не должны иметь столбцы с одинаковыми именами.

0 голосов
/ 11 мая 2018

Поместите результаты в таблицу данных:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication16
{
    public partial class Form1 : Form
    {
        DataTable dt = new DataTable();
        public Form1()
        {
            InitializeComponent();

            dt.Columns.Add("Begin Time", typeof(DateTime));
            dt.Columns.Add("HA Serial Number", typeof(string));
            dt.Columns.Add("Results", typeof(string));
            dt.Columns.Add("Serial Number", typeof(string));
            dt.Columns.Add("Test State", typeof(string));
            dt.Columns.Add("Lower Limits Amps", typeof(decimal));
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("KiloVolts Output", typeof(decimal));
            dt.Columns.Add("Leakage milliAmps", typeof(decimal));


            for (int i = 0; i < 10; i++)
            {
                DataRow newRow = dt.Rows.Add();

                newRow["Begin Time"] = DateTime.Now;
                newRow["HA Serial Number"] = i;
                newRow["Results"] = (i % 2) == 0 ? "Passed" : "Failed";
                newRow["Serial Number"] = "SN" + i.ToString();
                newRow["Test State"] = "Running not walking";
                newRow["Lower Limits Amps"] = -1.25;
                newRow["Name"] = "Power Out";
                newRow["KiloVolts Output"] = .001;
                newRow["Leakage milliAmps"] = i/1000 + .001;

            }
            dataGridView1.DataSource = dt;

        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...