Как сгруппировать строку с повторяющимся значением в определенном столбце с помощью Combobox?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как сгруппировать строку с повторяющимся значением в определенном столбце с помощью Combobox?

Сообщение Anonymous »

Я хочу сгруппировать строки с повторяющимися значениями в определенном столбце таблицы данных в поле со списком и отобразить их в DataGridView.
Однако при добавлении/удалении строк для настроенного таким образом представления сетки данных также требовалась функция удаления из связанной таблицы данных, а при выборе поля со списком возникала необходимость получить значение выбранной строки среди перекрывающихся строк.но когда я попытался создать функцию, возникла ошибка, в которой говорилось, что Combobox не может быть создан в связанном представлении, поэтому я не смог его создать. В представлении, привязанном к Datatable, строки с повторяющимися значениями определенного столбца (в примере — значение Столбца контекста) группируются в поле со списком (в примере — внутри «стандартного» столбца), а затем когда выбрано значение в поле со списком. Как выбрать значение строки, содержащей это значение?
private void TEST_PopulateDataGridView()
{
try
{
dgv_target.DataSource = null;

if (!dt_target.Rows.Count>1)
{

dgv_target.Columns.Clear();
foreach (DataColumn _column in dt_target.Columns)
{
dgv_calculateCBS.Columns.Add(_column.ColumnName, _column.ColumnName);
}
// find duplidate row in "Context"column
var _groupedRows = dt_target.AsEnumerable()
.GroupBy(row => row["Context"].ToString())
.ToList();
foreach (var _group in _groupedRows)
{
DataRow _firstRow = _group.First();
DataGridViewRow _newRow = new DataGridViewRow();
_newRow.CreateCells(dgv_target);
if (_group.Count() > 1) //if exist duplicate
{
foreach (DataColumn column in dgv_target.Columns)
{
//make combobox cell in "standard" column
if (column.ColumnName == "standard")
{
DataGridViewComboBoxCell comboBoxCell = new DataGridViewComboBoxCell();
var distinctValues = _group.Select(row => row[column.ColumnName].ToString()).ToArray();
comboBoxCell.Items.AddRange(distinctValues);
comboBoxCell.Value = distinctValues.First();
_newRow.Cells[dt_target.Columns.IndexOf(column)] = comboBoxCell;
}
else
{ _newRow.Cells[dt_target.Columns.IndexOf(column)].Value = firstRow[column]; }
}
_newRow.DefaultCellStyle.BackColor = System.Drawing.Color.PaleVioletRed;
}
//not duplicate row
else
{
foreach (DataColumn column in dt_totalCBSSum.Columns)
{
_newRow.Cells[dt_totalCBSSum.Columns.IndexOf(column)].Value = firstRow[column];
}
}
dgv_target.Rows.Add(_newRow);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}



Подробнее здесь: https://stackoverflow.com/questions/788 ... y-combobox
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»