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