Avatar billede sandrasmurf Nybegynder
08. april 2010 - 17:25 Der er 1 kommentar og
1 løsning

DataGridViewComboBoxColumn i databound datagridview

Hej eksperter

Jeg har bundet et datagridview op på en bindingsource

DataTable _dt = tableIo.RetrieveDT();
bindingSource1.DataSource = _dt.DefaultView;
dataGridView1.DataSource = bindingSource1;

Tredje kolonne er en foreign key kolonne. Der står altså kun integer værdier, 1,2,3,4 etc.

Jeg kan godt joine en tabel på for at få vist en meningsfyldt string i feltet, men jeg ville allerhelst vise kolonnen som en DataGridViewComboBoxColumn, som brugeren kan ændre i.

Jeg har søgt og søgt, men google er ikke min ven i dette tilfælde.

Så spørgsmålet er, hvordan jeg kan overbevise mit datagridview om at 3 kolonne skal vises som en combox, hvor teksten kommer fra en DataTable eller en enum.

Er der nogen der kan hjælpe?
Avatar billede sandrasmurf Nybegynder
08. april 2010 - 19:54 #1
Jeg har forsøgt at definere en enum med mulighederne til combobox kolonnen.

public enum MusicOrigin
{
  Unknown= 0,
  First= 1,
  Second= 2
}

Herefter har jeg forsøgt at fjerne foreign key kolonnen, der er oprettet som en tekstkolonne, fra grid'et og selv indsætte en ny combobox kolonne. Kolonnen hedder MusicOriginID_FK.

// Bind the table to the datagrid, same as before
DataTable _dt = _cueIO.RetrieveDT(_episode.Id);
bindingSource1.DataSource = _dt.DefaultView;
bindingNavigator1.BindingSource = bindingSource1;
dataGridView1.DataSource = bindingSource1;

// Locate and remove the foreign key column
int index = dataGridView1.Columns["MusicOriginID_FK"].Index;
dataGridView1.Columns.Remove("MusicOriginID_FK");

// Create a new Combobox column
DataGridViewComboBoxColumn dgvComboBoxColumn = new DataGridViewComboBoxColumn();
dgvComboBoxColumn.HeaderText = "Music Origin";
dgvComboBoxColumn.DataSource = Enum.GetValues(typeof(MusicOrigin));
dgvComboBoxColumn.ValueType = typeof(MusicOrigin);
dgvComboBoxColumn.DataPropertyName = "MusicOriginID_FK";

// Insert the ComboxColumn into the grid       
dataGridView1.Columns.Insert(index, dgvComboBoxColumn);

Dette genererer desværre en masse exceptions
Message = "DataGridViewComboBoxCell value is not valid."
Avatar billede sandrasmurf Nybegynder
15. april 2010 - 13:02 #2
Lukker spørgsmålet
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester