Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[C#] - Databinding en ComboBoxColumns

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Hier kom ik niet uit: Ik wil in een datagrid een combobox. Gebonden hieraan is een array met (person)objecten. In de combobox moet je de naam van de persoon kunnen selecteren.

Dit gaat prima als de waarden van de combobox ook voorkomen in de collectie die gebonden is aan het gridje. Als dat niet het geval is gaat het fout.

Een klein voorbeeld:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 public Form2()
        {
            InitializeComponent();

            // Array met gegevens maken welke in de dropdown moeten verschijnen
            Person[] personDropdownData = new Person[3];
            personDropdownData[0] = new Person("Piet", 21, true);
            personDropdownData[1] = new Person("Sjaak", 25, false);
            personDropdownData[2] = new Person("Fred", 56, true);

            // Gegevens voor de datagrid
            Person[] personData = new Person[100];
            for (int i = 0; i < 100; i++)
            {
                personData[i] = new Person("naam" + i.ToString(), i, false);
            }

            personBindingSource.DataSource = personData;

            // Comboboxen in de datagrid vullen en binden
            nameDataGridViewTextBoxColumn.DataSource = personDropdownData;
            nameDataGridViewTextBoxColumn.DisplayMember = "Name";
            nameDataGridViewTextBoxColumn.ValueMember = "Name";                        
        }


Dit gaat dus mis omdat de personen in de dropdownlijst niet voorkomen in het gridje. Als ik
C#:
1
nameDataGridViewTextBoxColumn.DataSource = personDropdownData;
vervang door
C#:
1
nameDataGridViewTextBoxColumn.DataSource = personData;
werkt het wel, maar ik wil andere items in mijn dropdownlijst. Iemand een idee hoe dit op te lossen?

[ Voor 0% gewijzigd door Verwijderd op 17-08-2007 15:32 . Reden: De person constructor heeft 3 params: naam, leeftijd, en overleden. Dit duidelijker gemaakt in het voorbeeld ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 14:05
Bedoel je niet dat het niet werkt omdat je in je Grid Personen hebt die niet in je array voor je dropdownlist voorkomen ?
In je grid hebt je 100 personen, met elk een id van 0 tem 99.
In je datasource voor je combobox heb je enkel 3 personen, met id 21, 25 en 56.
Wat moet jouw combobox tonen voor de personen met id 0 tem 20, 22 tem 24, 26 tem 55 en 57 tem 99 ?

https://fgheysels.github.io/


Verwijderd

Topicstarter
Het tekstgedeelte van de combobox moet de waarde tonen die het object uit het gridje heeft. Je kan die waarde alleen niet selecteren, dus als je de dropdownlijst ziet, moet die waarde er niet tussen zitten.

Dus elke persoon heeft al een naam, maar met de combobox moet je 'm een andere naam kunnen geven in dit voorbeeld.

Ik heb de code iets aangepast zodat het wat duidelijker wordt. Het gridje wordt dus gevuld met "naam1" t/m "naam99". In de combobox moet je dan Piet, Sjaak of Fred kunnen selecteren

[ Voor 22% gewijzigd door Verwijderd op 17-08-2007 15:33 . Reden: Ik heb de code iets aangepast zodat het wat duidelijker wordt. ]


Verwijderd

Topicstarter
Weet echt niemand hier een oplossing voor? Ik zit er behoorlijk mee in m'n maag...

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 29-11 15:35
Je moet volgens mij geen DataGridViewTextBoxColumn gebruiken maar een DataGridViewComboBoxColumn gebruiken.

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Mastermind schreef op woensdag 22 augustus 2007 @ 00:02:
Je moet volgens mij geen DataGridViewTextBoxColumn gebruiken maar een DataGridViewComboBoxColumn gebruiken.
Volgens mij is dat alleen maar slechte naamgeving van de TS, en gebruikt hij wel degelijk de ComboBoxColumn ;)

@TS ik weet niet of dit mogelijk is. Toevalligerwijs ben ik met ongeveer hetzelfde bezig, maar dan in .Net 1.1, waar er helemaal geen ondersteuning is voor comboboxes. Ik heb hier nu een stukje code gevonden online dat de TextBoxColumn extend, en die tekent dus comboboxes. Wellicht kun je dus zelf een custom combobox bouwen die wel het gedrag vertoont wat je wilt. Want volgens mij moet voor de standaard comboboxcolumn je huidige waarde ook in je lijst van mogelijkheden zitten.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info

Pagina: 1