2016-12-26 16 views
0

Мне нужно реализовать пользовательский элемент управления с помощью datatable или что-то, что вы предлагаете для разной длины столбца, и оно должно быть отзывчивым. Каждая строка в этой таблице содержит не менее 3 столбцов, и максимальное количество столбцов не должно превышать. Например, первая строка имеет 3 столбца, вторая строка имеет 5 столбцов, третья строка - 12 столбцов. Однако я не знаю максимальную длину столбца для одной строки. Я думал, что с помощью данных таблицы выгодно какКак представить данные в элементе управления с разными столбцами в каждой строке?

  DataTable dt = new DataTable(); 
      dt.Columns.Add("first column", typeof(string)); 
      dt.Columns.Add("second column", typeof(string)); 
      dt.Columns.Add("third column", typeof(List<string>)); 
      DataRow dr = dt.NewRow(); 
      dr[0] = "1"; 
      dr[1] = "a"; 
      dr[2] = new List<string>(){ "a","b","c","d"}; 
      dt.Rows.Add(dr); 
      dr = dt.NewRow(); 
      dr[0] = "2"; 
      dr[1] = "c"; 
      dr[2] = new List<string>() { "a", "b", "c"}; 
      dt.Rows.Add(dr); 
      dr = dt.NewRow(); 
      dr[0] = "3"; 
      dr[1] = "d"; 
      dr[2] = new List<string>() { "a", "b", "c","d","e" }; 
      dt.Rows.Add(dr); 
      gridControl1.DataSource = dt; 

Я использовал DevExpress GridView и я вижу ниже

this.

Но я не хочу этого видеть. Есть ли какой-либо элемент управления, который может представлять эти данные, например this?

Заранее благодарен!

+0

Одна возможность состоит в том, чтобы использовать DataGridView с одного столбца, значения которого конкатенация элементов списка (например, «a; b; c» или «a; b; c; d; d; f») и обрабатывать событие CellPainting DataGridView для рисования строк и соответствующих границ между ними. – Graffito

+0

Спасибо за ваш ответ. Я думал, что ваше решение, но b c d или т. Д., Также должно быть доступно для просмотра. – gokberk

+0

Используйте событие CellMouseDown DataGridView и выведите из e.X логическую ячейку. Когда вы рисуете «объединенную» ячейку или обрабатываете событие Cell MouseDown, используйте TextRenderer.Measure String(), чтобы настроить ширину «логических» ячеек или вывести «щелкнув» элемент. – Graffito

ответ

0

вид сетки используется для отображения таблицы и таблицы имеют фиксированную строку и столбец

Только вы можете добавить максимальное количество столбца в столбце, и этот тип зрения Предъявление сетки не представляется возможным в любом виде сетки.

Чтобы отобразить таблицу, как это можно использовать только HTML просмотра в вашем программном обеспечении или использовать draw для создания изображения, как это это не вид сетки на всех

+0

Могу ли я использовать Treelist или есть что-то вроде горизонтального treelist? – gokberk