Splt Datatable Rows в двух столбцах после фиксированного числа строк - PullRequest
0 голосов
/ 11 июня 2019

Я готовлю отчет о печати с помощью GridView, сейчас я заполняю данные из базы данных в ее брут-формате (две колонки (идентификатор, имя))

идентификатор имени
==========
1 x1
2 x3
3 x4
4 x8

Запрос менеджера на печать данных в два столбца, что означает

Идентификатор Имя Идентификатор Имя
=======================
1 x1 3 x4
2 x34 x8

Код:

static DataTable GetData() 
{ 
    DataTable dt = new DataTable(); 
    dt.Columns.Add(
        new DataColumn("ID", typeof(Int32))
    ); 
    dt.Columns.Add(
        new DataColumn("Name", typeof(string))); 

    for (int i = 1; i <= 200; i++) 
    { 
        DataRow Row = dt.NewRow(); 
        Row["ID"] = i; 
        Row["Name"] = "Name " + i.ToString(); 
        dt.Rows.Add(Row); } return dt; 
    }
}

Есть ли решение для разделения данных на две колонки.

С уважением

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Метод 2 (количество строк страницы шага параметра):

        DataTable dtFull = GetData();

        DataTable newDt = new DataTable();

        newDt.Columns.Add("ID", typeof(String));
        newDt.Columns.Add("Name", typeof(String));
        newDt.Columns.Add("ID", typeof(String));
        newDt.Columns.Add("Name", typeof(String));
        bool exit = true;
        int pagecount = 10;
        int i = 0;
        int j = 0;
        int k = 0;
        int m = 0;
        while (exit)
        {


            for (j = 0; (j<pagecount);j++)
            {
                DataRow newrow = newDt.NewRow();

                newrow["ID"] = dtFull.Rows[i][0].ToString();
                newrow["Name"] = dtFull.Rows[i][1].ToString();
                newDt.Rows.Add(newrow);

                i++;
                m++;
                if (i >= dtFull.Rows.Count)
                {
                    exit = false;
                    break;
                }
            }
            if (exit)
            {
                k = m - pagecount;
                for (j = 0; (j < pagecount); j++)
                {
                    newDt.Rows[m - pagecount + j][2] = dtFull.Rows[i][0].ToString();
                    newDt.Rows[m - pagecount + j][3] = dtFull.Rows[i][1].ToString();

                    i++;
                    if (i >= dtFull.Rows.Count)
                    {

                        exit = false;
                        break;
                    }
                }
            }      



        }
0 голосов
/ 12 июня 2019

Метод 1:

        DataTable dtFull = GetData();

        DataTable newDt = new DataTable();

        newDt.Columns.Add("ID", typeof(String));
        newDt.Columns.Add("Name", typeof(String));
        newDt.Columns.Add("ID", typeof(String));
        newDt.Columns.Add("Name", typeof(String));

        for (int i = 0; i < dtFull.Rows.Count; i++)
        {
            DataRow newrow = newDt.NewRow();
            if (i * 2  < dtFull.Rows.Count)
            {
                newrow["ID"] = dtFull.Rows[i * 2][0].ToString();
                newrow["Name"] = dtFull.Rows[i * 2][1].ToString();
                newDt.Rows.Add(newrow);
            }

            if (i*2+1 < dtFull.Rows.Count)
            {
                newDt.Rows[i][2] = dtFull.Rows[i * 2 + 1][0].ToString();
                newDt.Rows[i][3] = dtFull.Rows[i * 2 + 1][1].ToString();
            }

        }
...