Настройте элементы 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, а затем повторно привязать.