2017-01-03 4 views
1

Пожалуйста, обратитесь к изображениям. Как привязать данные таблицы SQL, которые хранятся в строках, в виде сетки данных (C# Windows Forms) в виде столбцов. Кроме того, я создал столбец [0] в качестве столбца с жесткой кодировкой. Мне нужно связать эти данные, поступающие с SQL на столбец 1. Пожалуйста, помогите мне. Заранее спасибо . :-)Как привязать данные к столбцам в виде C# Windows Forms, которые хранятся в строках в таблице SQL

SQL Table Expecting C# Grid View

ответ

2

Вы можете создать метод, который вращения DataTable и свопов столбцы и строки таким образом:

public DataTable Rotate(DataTable table) 
{ 
    var output = new DataTable(); 
    int i = 1; 
    output.Columns.Add(" "); 
    foreach (DataRow r in table.Rows) 
     output.Columns.Add((i++).ToString()); 
    foreach (DataColumn c in table.Columns) 
    { 
     var list = new List<object>(); 
     list.Add(c.ColumnName); 
     var x = table.AsEnumerable().Select(r => string.Format("{0}", r[c])).ToArray(); 
     list.AddRange(x); 
     output.Rows.Add(list.ToArray()); 
    } 
    return output; 
} 

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

enter image description here

для повернутых таблиц е:

enter image description here

или даже с некоторыми простыми трюками, как это:

enter image description here

Вот код, который я использовал для создания примера:

var dt = new DataTable(); 
dt.Columns.Add("Id", typeof(int)); 
dt.Columns.Add("Name", typeof(string)); 
dt.Columns.Add("Date", typeof(DateTime)); 
dt.Rows.Add(100, "A", DateTime.Now); 
dt.Rows.Add(200, "B", DateTime.Now.AddDays(1)); 
dt.Rows.Add(300, "C", DateTime.Now.AddDays(2)); 
dt.Rows.Add(400, "D", DateTime.Now.AddDays(3)); 
this.dataGridView1.DataSource = dt; 
this.dataGridView2.DataSource = Rotate(dt); 
//To hide column headers and show Id,Name,Date on rows headers, un-comment following codes: 
//dataGridView2.ColumnHeadersVisible = false; 
//dataGridView2.Columns[0].Visible = false; 
//for (int i = 0; i < dataGridView2.Rows.Count; i++) 
// dataGridView2.Rows[i].HeaderCell.Value = dataGridView2.Rows[i].Cells[0].Value; 
+1

Кроме того, если это для целей отчетности здесь представлено решение для отчетов rdlc: [Как сделать элемент отчета «Список» повторяться горизонтально для отчета RDLC?] (http://stackoverflow.com/q/37 623052/3110834) –

+0

Кажется, что сообщение отвечает на ваш вопрос, дайте мне знать, если у вас есть какие-либо проблемы с применением решения или если вы сочтете это полезным :) –

+0

Thank you: D. Он отлично работает. –