ebie147 Ответов: 2

Datagridview столбец в строку


Привет я довольно новичок в этом деле vb.net словом то что я хочу сделать это:

У меня есть этот datagridview, в котором есть столбец под названием "Сведения о кредиторе", который выглядит следующим образом
--------------------
/ Сведения О Кредиторе |
--------------------
|Абса |
|Абса |
|Capitec |
|ФНБ |
/ Стандартный Банк |
--------------------
то, что я хочу сделать, это объявить 1 строковую переменную и пусть столбец будет строкой, но я хочу удалить дубликаты, например, есть дубликат для Absa, а также между деталями каждого кредитора я хочу добавить"\", чтобы разделить их в строковой переменной, как я могу это сделать?

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

Я не знаю, как это сделать, любая помощь будет очень признательна

0x01AA

Что такое Источник данных DataGridView?

ebie147

доступ MS

0x01AA

Разве решение 2 не помогает?

ebie147

Я не должен разбираться в кодировании на C#

0x01AA

Уупс, мне очень жаль. Я пропустил тег VB :(

2 Ответов

Рейтинг:
12

0x01AA

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

Предполагая, что источник данных вашей сетки является DataTable, вы можете использовать что-то вроде этого, чтобы получить запрошенные данные:

private void buttonTest_Click(object sender, EventArgs e)
{
    // Demo Data
    DataTable dt = new DataTable();
    dt.Columns.Add(new DataColumn("Creditor_Details", typeof(string)));

    dt.Rows.Add(new object[] { "Absa"});
    dt.Rows.Add(new object[] { "Absa"});
    dt.Rows.Add(new object[] { "Capitec"});
    dt.Rows.Add(new object[] { "FNB" });
    dt.Rows.Add(new object[] { "FNB" });
    dt.Rows.Add(new object[] { "Standard Bank" });

    dataGridView.DataSource = dt;

    // Get Distinct Columns
    var result = dt.AsEnumerable()
                    .GroupBy(gb => gb.Field<string>("Creditor_Details"))
                        .Select(grp => grp.First()["Creditor_Details"]);

    // Join Columns to a single string
    var singleString = string.Join("/", result.ToArray());
}</string>


Не рекомендуется: плохое решение, если вам действительно нравится / нужно получить информацию из DataGridView:
private void buttonTest_Click(object sender, EventArgs e)
{
    // NOT SUGGESTED
    IEnumerable<datagridviewrow> dgvRows = dataGridView.Rows.Cast<datagridviewrow>();

    var resultDGV = dgvRows
                        .GroupBy(row => row.Cells["Creditor_Details"])
                            .Select(grp => grp.First().Cells["Creditor_Details"]);
    var singleStringDGV = string.Join("/", result.ToArray());
}

Я надеюсь, что это он.


Рейтинг:
0

Richard MacCutchan

Использовать StringBuilder[^], и добавьте содержимое каждой ячейки по очереди, не забывая проверять наличие дубликатов.