Avatar billede coltau Juniormester
16. december 2008 - 16:14 Der er 3 kommentarer og
1 løsning

DataGridViewComboBoxCell value is not valid

Jeg forsøger at anvende BindingList<T> som DataSource til DataGridView.
En af kolonnerne skal være en ComboBox men når jeg angiver DataPropertyName("FormTypeId") fejler programmet når det afvikles.

Fejlen er, System.ArgumentException: DataGridViewComboBoxCell value is not valid.


Nedenstående er blot en Windows.Form med en dataGridView.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace DataGridView
{
  public partial class Form1 : Form
  {
    MyListOfRecord oMyListOfRecord;

    // Items til ComboBox
    public class MyFormType
    {
      int lId;
      string lName;
      public int ID { get { return lId; } set { lId = value; } }
      public string Name { get { return lName; } set { lName = value; } }
      public MyFormType(int aId, string aName)
      {
        lId = aId;
        lName = aName;
      }
    }

    // Liste med items til ComboBox : DataSource til Combo
    public class MyFormList : BindingList<MyFormType>
    {
      public MyFormList()
      {
        this.Add(new MyFormType(1, "Rund"));
        this.Add(new MyFormType(2, "Firkantet"));
      }
    }

    // Record item
    public class MyRecord
    {
      int lId;
      string lName;
      int lFormTypeId;
      public int ID { get { return lId; } set { lId = value; } }
      public int FormTypeId { get { return lFormTypeId; } set { lFormTypeId = value; } }
      public string Name { get { return lName; } set { lName = value; } }
    }

    // Liste med record items : DataSource til DataGridView
    public class MyListOfRecord : BindingList<MyRecord>
    {
      public MyFormList oMyFormList;

      public MyListOfRecord()
      {
        oMyFormList = new MyFormList();
      }
    }

    public Form1()
    {
      InitializeComponent();
      oMyListOfRecord = new MyListOfRecord();
      dataGridView1.DataSource = oMyListOfRecord;
      dataGridView1.Columns["FormTypeId"].Visible = false;
      DataGridViewComboBoxColumn c = new DataGridViewComboBoxColumn();
      c.DataSource = oMyListOfRecord.oMyFormList;
      dataGridView1.Columns.Add(c);
      c.HeaderText = "Form";
      c.DisplayMember = "Name";
      c.ValueMember = "Id";
      c.DataPropertyName = "FormTypeId"; // DENNE LINIE FEJLER (når programmet er startet)
    }
  }
}
Avatar billede coltau Juniormester
16. december 2008 - 21:22 #1
Linien
c.DataPropertyName = "FormTypeId"
bevirker at programmet fejler når det startes.

Måske anvender jeg DataPropertyName forkert. ?
Avatar billede coltau Juniormester
22. december 2008 - 10:33 #2
Hvis jeg anvender string i stedet for int fejler programmet ikke.

Underligt. ?
Avatar billede coltau Juniormester
22. december 2008 - 10:33 #3
Lukker
Avatar billede coltau Juniormester
21. september 2009 - 15:13 #4
Lukkes
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

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





Premium
Region Syddanmark får kæmpe GDPR-bøde for anden gang på to måneder: Har nu fået GDPR-bøder for en million kroner
For anden gang på bare to måneder har Datatilsynet anmeldt Region Syddanmark til politiet for at overtræde GDPR. Tilsynet vil have regionen til at betale en bøde på en halv million kroner.
CIO
“Der har simpelthen været for få gråhårede medarbejdere involveret i den her udviklingsproces. Folk der ved, hvad der skal til”
"Vi havde ansat nogle unge mennesker i sandaler og med langt skæg for at bryde med det traditionelle it-setup. De her vakse unge mennesker fik også ret hurtigt bygget en supersmart applikation til virksomheden. Men den brager ned, da vi ruller den ud, og den fylder cirka 1,5 procent af alle transaktioner."
Job & Karriere
35-årig kvinde gik amok på hjemmekontoret efter fyring: ”De fjernede ikke min adgang, så jeg slettede p-drevet lol”
En 35-årig kvinde står anklaget for at have slettet 21,3 gigabyte data fra fællesdrevet efter, at hun blev fyret. Nu risikerer hun op til 10 års fængsel.
White paper
Bringer dine sikkerhedssiloer data og systemer i fare?
Individuelle sikkerhedsservices til hvert behov skaber store problemer og øger sårbarheden. Det er tid til at samle dem, få det fulde overblik og lukke hullerne i beskyttelsen.