Avatar billede Lasse Novice
12. april 2007 - 02:04 Der er 6 kommentarer og
1 løsning

Combobox.Items viser ikke ToString()

Hej

Jeg har foelgende kode:

DataTable dt = new DataTable("Test");

this.combobox1.Items.Add(dt);
this.combobox1.SelectedIndex = 0;

Jeg forventer at faa vist Test i combobox, da dette er hvad der returneres fra dt.ToString(), men det sker ikke... Hvorfor?
Avatar billede skov_p Praktikant
12. april 2007 - 12:50 #1
Det er lidt underligt...

Her bliver ToString() ikke udført

class MyTable:DataTable{

    public MyTable(string name) {
      base.TableName = name;
    }

    public override string ToString() {
      return base.TableName;
    }
  }

Men det gør den her hvis jeg tilføjer en person til min combobox

class Person {
    string _name = "";
    public Person(string navn) {
    }

    public override string ToString() {
      return _name;
    }
  }
Avatar billede Lasse Novice
12. april 2007 - 16:48 #2
Ja, det er ligesom om combobox'en "kender" til typen DataTable, og hvis Item er DataTables, saa skal den skrive en bestemt property ud og dermed ikke ToString()... who knows? Er der nogen der kender til dette?
Avatar billede target Nybegynder
13. april 2007 - 12:35 #3
Prøv at tilføje linien:
this.combobox1.DisplayMember = "TableName";
Avatar billede Lasse Novice
13. april 2007 - 16:35 #4
Mange tak target... Det virkede.

Stadig er det lidt maerkeligt at det andet ikke virker. Det kunne vaere sjovt at vide hvorfor.

Faktisk har jeg altid troet Displaymember kun blev brugt i Binding context. Men det er aabenbart ikke korret.

Mange tak. Svar => point.
Avatar billede target Nybegynder
13. april 2007 - 19:38 #5
Svar
Avatar billede target Nybegynder
13. april 2007 - 20:53 #6
Er glad for det hjalp. ;)
Ved ikke lige, hvorfor den ikke bruger .ToString() på lige netop en datatable.
Jeg prøvede at reflecte lidt i comboboxen, men fandt ikke noget brugbart
Avatar billede Lasse Novice
13. april 2007 - 23:24 #7
Efter lidt reflectering:
Den tekst der bliver vist fremkommer via et kald til:

GetItemText

Proev evt. denne kode:

DataTable dt = new DataTable("qwel");
ComboBox cb = new ComboBox();
cb.FormattingEnabled = true; // udkommenter mig
string s = cb.GetItemText(dt);

Her kommer teksten ud forkert.... men hvorfor? Proev at udkommenter linie 3 og koer programmet igen. Nu kommer det korrekt. Aabenbart sker der noget formattering.
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