RizwanShaikh Ответов: 1

Как преобразовать строки в столбец datatable C#


Мой результат таблица
Name	Id	fee_head	     fee
Jhon	        1	EXAM FEE              1
Jhon	        1	STATE OF MARKS	     80
Jhon	        1	TERM END EXAM	     300
Jhon	       1	COST OF FORM	      20
Charli	      40	EXAM FEE	      4
Charli	      40	STATE OF MARKS	      80
Charli	      40	TERM END EXAM	      300
Charli	       40	COST OF FORM	      20
Jacky	       2	EXAM FEE	      3
Jacky	       2	STATE OF MARKS	     80
Jacky	       2	TERM END EXAM	     300
Jacky	       2	COST OF FORM	     20



Но Мне Нужен Этот Формиат

Student_Name	Student_Id	fee_head_1	fee_1	fee_head_2	fee_2	fee_head_4	fee_4	fee_head_5	fee_5		
Jhon	1	EXAM FEE	1	STATE OF MARKS	80	TERM END EXAM	300	COST OF FORM	20		
Charli	40	EXAM FEE	1	STATE OF MARKS	80	TERM END EXAM	300	COST OF FORM	20		
Jacky	2	EXAM FEE	1	STATE OF MARKS	80	TERM END EXAM	300	COST OF FORM	20		

Первый буксировочный столбец такой, какой он есть...а столбец fee_head множественный и rwos formate как сделать??? plzz Help


Что я уже пробовал:

у меня есть кое какой код попробуй Но
DataTable query = new DataTable();
  query = obj_Cls_Main.Read_Table("RESULT QUERY");

             DataTable dtpivot = new DataTable();
             for (int i = 0; i <= query.Rows.Count; i++)
             {
                 dtpivot.Columns.Add(i.ToString());

             }
             for (int i = 0; i < query.Columns.Count; i++)

             {

                 DataRow dr = dtpivot.NewRow();

                 dr[0] = query.Columns[i].ToString();

                 for (int j = 0; j < query.Rows.Count; j++)

                     dr[j + 1] = query.Rows[j][i];

                 dtpivot.Rows.Add(dr);

             }
             gridControl1.DataSource = dtpivot;

1 Ответов

Рейтинг:
2

Sheila Pontes

Привет,

Ниже приведен код, который сортирует таблицу.

private int find_index_column_list(string[,] list, string element)
{
    int index_column = 0;
    for (int index = 0; index < (list.Length /2); index++)
    {
        if (list[index, 0] == element)
        {
            index_column = Convert.ToInt16(list[index, 1]);
            return index_column;
        }
    }

    return -1;
}

private void order_table()
{
    try
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Name");
        dt.Columns.Add("Id");
        dt.Columns.Add("fee_head");
        dt.Columns.Add("fee");

        DataRow dr = dt.NewRow();
        dr["Name"] =  "John";
        dr["Id"] = "1";
        dr["fee_head"] = "EXAM FEE";
        dr["fee"] = "1";
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["Name"] =  "John";
        dr["Id"] = "1";
        dr["fee_head"] = "STATE OF MARKS";
        dr["fee"] = "80";
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["Name"] =  "Charli";
        dr["Id"] = "40";
        dr["fee_head"] = "EXAM FEE";
        dr["fee"] = "1";
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["Name"] =  "Charli";
        dr["Id"] = "40";
        dr["fee_head"] = "STATE OF MARKS";
        dr["fee"] = "80";
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["Name"] =  "Jacky";
        dr["Id"] = "2";
        dr["fee_head"] = "EXAM FEE";
        dr["fee"] = "1";
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["Name"] =  "Jacky";
        dr["Id"] = "2";
        dr["fee_head"] = "STATE OF MARKS";
        dr["fee"] = "80";
        dt.Rows.Add(dr);

        //create columns
        DataTable dtpivot = new DataTable();
        dtpivot.Columns.Add("Student_Name");
        dtpivot.Columns.Add("Student_Id");
        dtpivot.Columns.Add("fee_head_1");
        dtpivot.Columns.Add("fee_1");
        dtpivot.Columns.Add("fee_head_2");
        dtpivot.Columns.Add("fee_2");


        string[,] list = new string[2, 2];
        list[0, 0] = "1"; //fee id
        list[0, 1] = "3"; //index column
        list[1, 0] = "80";//fee id
        list[1, 1] = "5"; //index column

        string student_id = "";
        int index_column = 0; //index column element
        dr = null;

        //read each line
        foreach (DataRow drline in dt.Rows )
        {
            //verify if is the same student
            if (student_id != drline["Id"].ToString())
            {
                //verify first record
                if (dr != null) { dtpivot.Rows.Add(dr); }

                //inicialize the line
                student_id = drline["Id"].ToString();
                dr = dtpivot.NewRow();
                dr["Student_Name"] = drline["Name"].ToString();
                dr["Student_Id"] = drline["Id"].ToString();
            }

            //find columns for data - head and id
            index_column = this.find_index_column_list(list, drline["fee"].ToString());
            dr[index_column] = drline["fee"].ToString();
            dr[(index_column - 1)] = drline["fee_head"].ToString();
        }

        //verify last record
        if (dr != null) { dtpivot.Rows.Add(dr); }

    }
    catch (Exception ex)
    {
        //message error.
    }
}


RizwanShaikh

Как обрабатывать из SQL-запроса????

Sheila Pontes

Замените datatable, "dt", который я создал вручную, результатом вашего соединения с базой данных.

RizwanShaikh

Спасибо