SuperMiQi Ответов: 0

Настройте элементы datagrivviewcomboboxcell во время процесса привязки источника данных.


Всем Привет,

Я ищу способ кормить ячейку combobox datagridview во время инициализации операции привязки источника данных.

Я надеялся применить cmb.Items. Add (...) операция есть, но RowsAdded не приходит для каждой новой строки, это немного случайно.

Если я применяю эту операцию после завершения привязки, то обновление элемента combobox для 1024 строк в моем случае занимает очень много времени.

Кто-нибудь знает способ кормить combobox по требованию, если я использую не систему virtualmode, а способ привязки источника данных ?

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

Я пытался:
RowsAdded += AdvancedDataGridView_RowsAdded;

private void AdvancedDataGridView_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
        {
            if (_onRowAdded != null)
            {

                foreach (System.Windows.Forms.DataGridViewRow row in base.Rows)
                {
                    T values = (T)row.DataBoundItem;
                    values = Copy(values);
                    _onRowAdded(row, values);
                }
            }
        }

        private void OnRowAdded(DataGridViewRow row, Channel values)
        {
            mpUserControls.DataGridViewColumn col = _grid.Columns["InputMode"];

            System.Windows.Forms.DataGridViewCell cell = row.Cells[col.Index];

            if (cell is DataGridViewComboBoxCell)
            {
                DataGridViewComboBoxCell combo = (DataGridViewComboBoxCell)cell;
                combo.Value = string.Empty;
                combo.Items.Clear();
                if (combo.Items.Count <= 0)
                {
combo.Items.Add(Channel.netInputMode.INPUTMODE_VOLTAGE.ToString());
                    if (row.Index % 2 != 0)
combo.Items.Add(Channel.netInputMode.INPUTMODE_ICP.ToString());
                }

                combo.Value = values.InputMode;
            }
        }


Это прекрасно работает для строк с индексом 0 и 1, но не до тех пор, пока число строк не достигнет 1024.

Знаете ли вы, есть ли возможный способ завершить это ожидание ?

Заранее большое вам спасибо.
С уважением.
Мики

RickZeeland

Я думаю, что вы должны сбросить BindingSource, например, установить .DataSource в NULL, а затем повторно привязать.

0 Ответов