Avatar billede anders_cp Nybegynder
12. februar 2009 - 01:05 Der er 9 kommentarer og
1 løsning

Frustration over at kunne få "value" frem på combobox

Hej
Jeg har i en windows-form oprettet en combobox, og vil have "value" frem.

Således har jeg fyldt fyldt comboboxen ud:

        private void PopulateAll2Series()
        {
            ArrayList al = new ArrayList();

            driverdatabaseDataSetTableAdapters.SerieTableAdapter SERIESadapter =
                new WindowsDrivere.driverdatabaseDataSetTableAdapters.SerieTableAdapter();

            driverdatabaseDataSet.SerieDataTable series;

            series = SERIESadapter.GetAllSeries();
            al.Add(new CustomItem("", 0));
            foreach (driverdatabaseDataSet.SerieRow serRow in series)
            {
                theALLseriename = (string)serRow["SerieName"];
                theALLvalue = (int)serRow["SerieID"];
                al.Add(new CustomItem(theALLseriename, theALLvalue));
            }
           
            comboBox2Series.DataSource = al;
        }




I debug-vinduet figurer valuefeltet således:

DataSource
  - [1]
      name {hp-sovs}
      value 7

Det er tallet 7 jeg ønsker og jeg har prøvet alt muligt (synes jeg):
bla:
// resultat: hp-sovs
comboBox2Series.SelectedItem.ToString();
// resultat: hp-sovs
comboBox2Series.SelectedValue.ToString();

hilfe...
Avatar billede arne_v Ekspert
12. februar 2009 - 01:30 #1
comboBox2Series.SelectedValue ser rigtig ud, hvis:
- klassen CustomItem har en property ALLValue
- du sætter comboBox2Series.ValueMember = "ALLValue";
Avatar billede anders_cp Nybegynder
12. februar 2009 - 10:32 #2
Jeg prøver som du skriver. Har forsøgt at sætte propertyen flere steder i nedenstående kode. Men jeg får stadig ikke værdien 7 når jeg skriver:
comboBox2Series.SelectedValue.ToString();


        private void PopulateAll2Series()
        {
            ArrayList al = new ArrayList();

            driverdatabaseDataSetTableAdapters.SerieTableAdapter SERIESadapter =
                new WindowsDrivere.driverdatabaseDataSetTableAdapters.SerieTableAdapter();
            driverdatabaseDataSet.SerieDataTable series;

            series = SERIESadapter.GetAllSeries();
            comboBox2Series.ValueMember = "ALLValue";
            al.Add(new CustomItem("", 0));
            foreach (driverdatabaseDataSet.SerieRow serRow in series)
            {

                theALLseriename = (string)serRow["SerieName"];
                theALLvalue = (int)serRow["SerieID"];
                al.Add(new CustomItem(theALLseriename, theALLvalue));
            }
            comboBox2Series.DataSource = al;
        }
Avatar billede anders_cp Nybegynder
12. februar 2009 - 10:59 #3
Har også prøve med:
comboBox2Series.ValueMember = "theALLvalue";
Avatar billede anders_cp Nybegynder
12. februar 2009 - 12:02 #4
hmm, fik ændret helt på hvordan jeg udfyldte dropdown-boksen. Således. Men jeg har nu et andet problem med at få fyldt første felt ud med en default-værdi. Dette gjorde jeg før således:

al.Add(new CustomItem("", 0));
Hvor al var et array (se min kode i forrige post). Nu er min udfyldelse ændret således:
        private void PopulateAll2Series()
        {
            ArrayList al = new ArrayList();

            driverdatabaseDataSetTableAdapters.SerieTableAdapter SERIESadapter =
                new WindowsDrivere.driverdatabaseDataSetTableAdapters.SerieTableAdapter();
            driverdatabaseDataSet.SerieDataTable series;

            series = SERIESadapter.GetAllSeries();

            foreach (driverdatabaseDataSet.SerieRow serRow in series)
            {
                comboBox2Series.DisplayMember ="SerieName";
                comboBox2Series.ValueMember = "SerieID";
            }
            comboBox2Series.DataSource = series;
        }

men kan du hjælpe mig med det nyopståede problem; at få fyldt en defaultværdi som første post?
Avatar billede kalp Novice
12. februar 2009 - 15:09 #5
Avatar billede arne_v Ekspert
13. februar 2009 - 02:32 #6
1)  Du skal vel have new CustomItem("", 0) sat ind i din series fremfor i den al som du ikke bruger.

2)  Du skal bare sætte DisplayMemmber og ValueMember en gang - der er ikke brug for en løkke der.
Avatar billede anders_cp Nybegynder
13. februar 2009 - 11:55 #7
ok, mange tak arne_v.
Læg et svar ;)
Avatar billede arne_v Ekspert
13. februar 2009 - 15:00 #8
svar
Avatar billede anders_cp Nybegynder
13. februar 2009 - 15:09 #9
Tak for hjælpen - jeg har dog stadig ikke kunne lave det ekstra tomme felt. Nedenstående kode har jeg forsøgt dit forslag på, såå hvis du vil kunne fortælle mig hvad jeg stadig gør galt, vil jeg være dig taknemmelig ;):

private void PopulateAllOPsystem()
{
                driverdatabaseDataSetTableAdapters.OperatingSystemTableAdapter OPadapter =
                new WindowsDrivere.driverdatabaseDataSetTableAdapters.OperatingSystemTableAdapter();

            driverdatabaseDataSet.OperatingSystemDataTable op;

            op = OPadapter.GetOperatingSystem();
            comboBoxOPsystem.DisplayMember = "OPName";
            comboBoxOPsystem.ValueMember = "OperatingSystemID";
            comboBoxOPsystem.Items.Insert(0,new CustomItem("", 0));

            comboBoxOPsystem.DataSource = op;
        }
Avatar billede anders_cp Nybegynder
13. februar 2009 - 16:19 #10
Jeg har oprettet spørgsmålet her:
http://www.eksperten.dk/spm/863780
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