Во-первых, какой смысл отображать подобное, поскольку во второй строке базы данных будут значения V
и Data 1
.
Что вы можете сделать, если щелкнуть по пользователю, чтобы добавить строку, проверить,В некоторых ячейках базы данных есть одинаковые параметры (в вашем случае первая и вторая), и если это так, то не добавляйте новую строку, а изменяйте текущую, а в других ячейках добавляйте новые значения, кроме старых.
Если вы делаете это кактогда ваш dataGridView
отобразит его в виде одной строки
-----------------------------------------------------------------
| V | Data 1 | Data 1 Quantity | Data 1 Details | //when editing existing cell value add new line so it displays like this
| | | Data 1.A Quantity | Data 1.A Details |
-----------------------------------------------------------------
Две другие вещи, которые вы можете сделать:
- Создать пользовательский элемент управления, который наследуется от
DataGridView
класса и внутриэто создаст функцию, которая автоматически объединит ячейки с некоторым условием и отобразит его, как вам нравится (уровень advenced) - Создайте метод расширения для
DataGridView
, который удалит данные некоторых ячеек по некоторому условию
Пример второго решения выглядит следующим образом:
public static void EmptyOnDuplicateData(this DataGridView dgv, string columnToEmpty)
{
List<string> ExistingData = new List<string>(); //I would do this with T and instead of passing string i would pass DataGridViewColumn so i could get type and other things but that is on you and i am just writing example
foreach(DataGridViewRow row in dgv.Rows)
{
if(ExistingData.Contains(row.Cells[columnToEmpty].Value)) //Data from this cell already existed before this cell
{
row.Cells[columnToEmpty].Value == ""; //We clear that from that cell
}
else // Data from this cell doesn't exist anywhere before
{
ExistingData.Add(row.Cells[columnToEmpty].Value);
}
}
}
И вы просто вызываете его после заполнения DataGridView
с помощью yourDgv.EmptyOnDuplicateData("SomeColumn");
Я хочу упомянуть tПриведенный выше код является просто примером, и в нем есть много нехороших вещей, но, как я уже сказал, это всего лишь пример, и я не хочу писать код для вас, поэтому у вас есть база и просто улучшите ее.