Witam
Mam taki problem i mam nadzieje, że ktoś pomoże rozwiązać mi go.
Wczytuje tabelę z bazy stworzonej w SQlite (select * from tabela). Używam DataAdapter. Następnie przy pomocy funkcji fill (dataAdapter.Fill()) wypełniam DataSet (który zawiera jedną tabelę). Następnie do DataTable wczytuje pierwszą(zerową) tabelę z DataSetu (bo przecież i tak jest tylko jedna). Następnie DataTable ustawiam jako DataSource dla DataGridView
SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(CommandText, con);
dataAdapter.Fill(dataset);
DataTable dt = dataset.Tables[0];
dataGridView1.DataSource = dt;
I tutaj pojawia się problem. Chciałbym żeby np. 5 kolumna była kolumną ComboBox. Nie wiem jak w dataGridView “podmienić” jedną kolumnę typu DataGridViewColumn na DataGridViewComboBoxColumn. Przy tworzeniu ręcznym dataGridView można wybrać typ kolumny. Próbowałem zwyczajnie
dataGridView1.Columns[0] = new DataGridViewComboBoxColumn();
Niestety nie działa a o dziwo działa z komórkami czyli
dataGridView1.Rows[0].Cells[0] = new DataGridViewComboBoxCell();
Jednak cała kolumna jest tylko do odczytu.
Próbowałem robić tak że zastąpię wszystkie komórki w danej kolumnie i super działa. Jednak gdy tworze nowy rekord w dataGridView jest on zwykłą komórką bez ComboBox…
Ma ktoś jakiś pomysł?
Mi jedyne co przychodzi do głowy to stworzyć nową kolumnę jako zmienną, nazwać ją tak samo jak pierwotną, wartości z kolejnych wierszy rows_.Cells[“Nazwa_Kolumny”] zapisać gdzieś. Zapamiętać pozycję kolumny, usunąć ją, następnie insertem wstawić nową kolumnę z comboboxem w miejsce starej, ustawić dla całej kolumny DataSource na jakąś tablicę którą chcę, i na koniec odtworzyć stan wartości (Value) w poszczególnych wierszach._