Мульти "столбец" DataGridView C # - PullRequest
5 голосов
/ 05 апреля 2010

У меня есть DataGridView, который связан с DataSet. Имеет столбцы DateCreated, Weight, DateUsed. Эти три столбца не занимают много горизонтального пространства в DataGridView, который является почти полноэкранным. Можно ли обернуть эти столбцы до вершины, если представление достаточно широкое, чтобы поддерживать вторую группу этих столбцов. Таким образом, через заголовок он будет читать DateCreated, Weight, DateUsed, DateCreated, Weight, DateUsed. Затем при щелчке строки выделяются только 3 ячейки, а не все шесть. Есть ли что-то, что может обеспечить эту функциональность?

Ответы [ 4 ]

2 голосов
/ 06 апреля 2010

Я не знаю ничего подобного из коробки.

Вы можете создать этот эффект самостоятельно. Вам нужно будет отделить фактические данные от представления данных. Вместо одного DataRow на строку сетки вам нужно объединить их, чтобы отобразить несколько строк в одной строке.

Итак, ваш вспомогательный метод может сделать следующее:

  • Сравните ширину DataGridView с количеством строк
  • Определите, сколько столбцов DataRows будет видно
  • Создание новой таблицы данных с дополнительными наборами столбцов для представления каждого столбца.
    • Пример: DateCreated1, Weight1, DateUsed1, DateCreated2, Weight2, DateUsed2 и т. Д.
  • Заполнить таблицу данных исходным набором данных
  • Привязать DataGridView к новой таблице

Некоторые соображения: могут ли пользователи сортировать данные? Если это так, вам придется написать это самостоятельно.

Вам нужно иметь возможность добавлять новые строки, используя это представление? С таким видом это звучит очень сложно.

1 голос
/ 21 декабря 2010

Я понимаю, что вы опубликовали этот вопрос в апреле, и, возможно, вы уже нашли решение или перешли к чему-то другому. Тем не менее, я недавно написал элемент управления, который в основном выполняет то, что вы описываете, и вы можете скачать его бесплатно из BitBucket здесь:

https://bitbucket.org/dtao/taocontrols/downloads

Screenshot of SplitDataGridView control

Если вам интересно, дайте возможность SplitDataGridView контролировать и дайте мне знать, что вы думаете.

0 голосов
/ 05 апреля 2010

Может быть глупо, но просто вставьте два DGV рядом, выключите вертикальную полосу прокрутки левого DGV, свяжите каждый DGV с половиной данных и управляйте ими обоими с помощью полосы прокрутки правого DGV.

Кроме того, я думаю, вам понадобится немало кода для того, чтобы заставить один DGV делать то, что вы хотите.

0 голосов
/ 05 апреля 2010

Довольно сложно понять, что именно вы имеете в виду, но я уверен, что это можно сделать с помощью некоторой функциональности JS, где вы вычисляете ширину столбцов и ширину браузера / экрана и соответственно настраиваете DataGridView. У вас может быть несколько проблем с настройкой ширины ячеек "td", поэтому вариант с CSS-провайдерами и рендерингом в виде div и span может быть опцией.

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