Avatar billede roschmann Nybegynder
30. oktober 2004 - 09:15 Der er 18 kommentarer og
1 løsning

Hvordan add'er jeg en tom øverste række i en ComboBox

Jeg har en ComboBox med forskeligge valgmuligheder (valgmulighederne er databindet fra en tabel i et dataset), og nu skal jeg have lagt et tomt felt ind øverst i ComboBoxen (uden værdi), såden at brugeren kan lade være at vælge noget i ComboBoxen.

Efterfølgende skal jeg lave en test hvor der testes for om der er valgt noget i ComboBoxen, og hvis der er valgt noget henter jeg værdien fra det valgte. Omvendt skal testen ikke gøre noget hvis der ikke er valgt noget i ComboBoxen.

Hvordan får jeg smidt et tomt felt uden værdi ind i ComboBoxen?
Avatar billede arne_v Ekspert
30. oktober 2004 - 10:13 #1
Er det ikke bare:

            this.comboBox1.Text = "";
            this.comboBox1.Items.Add("");
            this.comboBox1.Items.Add("A");
            this.comboBox1.Items.Add("BB");
            this.comboBox1.Items.Add("CCC");
Avatar billede arne_v Ekspert
30. oktober 2004 - 10:14 #2
Åh nu forstår jeg.

Du vil have alle d eøvrige værdier fra en tabel men derudover have blank.
Avatar billede arne_v Ekspert
30. oktober 2004 - 10:19 #3
Men løsningen må være den samme:

Erstat

this.comboBox1.DataSource = noget;

med

            this.comboBox1.Items.Add("");
            for(int i = 0; i < noget.Length; i++)
            {
                this.comboBox1.Items.Add(noget[i]);
            }
Avatar billede roschmann Nybegynder
30. oktober 2004 - 10:33 #4
ok, men jeg har lavet databind på følgende måde:

lstPlayers.DataSource        = Form1.oDataSet.Tables["player"];
lstPlayers.DisplayMember    = "name";
lstPlayers.ValueMember        = "id";

da jeg gerne vil vise navnet på de objekter som listes, og samtidig skal bruge id attributten for det valgte objekt i comboboxen...kan jeg gøre det med din løsning?
Avatar billede roschmann Nybegynder
30. oktober 2004 - 10:36 #5
sorry, det ersafølig ikke en listbox (lst) og det ser derfor sådan ud:

cboPlayers.DataSource      = Form1.oDataSet.Tables["player"];
cboPlayers.DisplayMember    = "name";
cboPlayers.ValueMember      = "id";
Avatar billede arne_v Ekspert
30. oktober 2004 - 10:51 #6
Jeg er helt sikker på at man kan med samme metode.

Men det kræver nok en lille smule kode.

Jeg prøver at bixe noget.
Avatar billede roschmann Nybegynder
30. oktober 2004 - 11:00 #7
tak Arne...
Avatar billede arne_v Ekspert
30. oktober 2004 - 11:48 #8
OK

Jeg har en tabel T1 med felter F1 og F2 - F1 er en int og er value, F2 er string
og er display.

Jeg laver en lille data klasse:

    public class T1
    {
        private int f1;
        private string f2;
        public T1()
        {
            f1 = 0;
            f2 = "";
        }
        public T1(int f1, string f2)
        {
            this.f1 = f1;
            this.f2 = f2;
        }
        public int F1
        {
            get
            {
                return f1;
            }
            set
            {
                f1 = value;
            }
        }
        public string F2
        {
            get
            {
                return f2;
            }
            set
            {
                f2 = value;
            }
        }
    }

og så sætter jeg comboboxen op med:

            DataSet ds = new DataSet();
            da.Fill(ds, "T1");
           
            this.comboBox1.Items.Add(new T1(0, ""));
            for(int i = 0; i < ds.Tables["T1"].Rows.Count; i++)
            {
                DataRow row = ds.Tables["T1"].Rows[i];
                this.comboBox1.Items.Add(new T1((int)row["F1"], (string)row["F2"]));
            }
            this.comboBox1.DisplayMember = "F2";
            this.comboBox1.ValueMember = "F1";
Avatar billede arne_v Ekspert
30. oktober 2004 - 11:51 #9
Det kan muligvis laves smartere.

Men det var lige hvad jeg kunne komme op med.
Avatar billede roschmann Nybegynder
30. oktober 2004 - 12:01 #10
Tak - jeg tester det lige...
Avatar billede jepsen999 Nybegynder
30. oktober 2004 - 12:55 #11
Du kan indsætte det blanke item efter du har databindet:
lstPlayers.DataSource        = Form1.oDataSet.Tables["player"];
lstPlayers.DisplayMember    = "name";
lstPlayers.ValueMember        = "id";

lstPlayers.DataBind();
lstPlaytes.Items.InsertAt(0,new ListItem("",""));
Avatar billede roschmann Nybegynder
30. oktober 2004 - 13:43 #12
tak for hjælpen...vi kigger lige på det, og skal nok vende tilbage
Avatar billede roschmann Nybegynder
30. oktober 2004 - 15:10 #13
Hej igen...

lstPlayers.DataBind();
lstPlaytes.Items.InsertAt(0,new ListItem("",""));

ovenstående virker ikke for os, da vi arbejder på en pda...og så var det jo også til en combobox og ikke en listbox.

Vi arbejder med 4 comboboxe, hvor var har oprettet et dataview til hver af dem:

DataView dv1 = new DataView(Form1.oDataSet.Tables["player"]);
DataView dv2 = new DataView(Form1.oDataSet.Tables["player"]);
DataView dv3 = new DataView(Form1.oDataSet.Tables["player"]);
DataView dv4 = new DataView(Form1.oDataSet.Tables["player"]);

cbChoosePlayer4.DataSource = dv4;
cbChoosePlayer3.DataSource = dv3;
cbChoosePlayer2.DataSource = dv2;
cbChoosePlayer1.DataSource = dv1;   

cbChoosePlayer4.DisplayMember = "name";
cbChoosePlayer3.DisplayMember = "name";
cbChoosePlayer2.DisplayMember = "name";
cbChoosePlayer1.DisplayMember = "name";

cbChoosePlayer4.ValueMember = "id";
cbChoosePlayer3.ValueMember = "id";
cbChoosePlayer2.ValueMember = "id";
cbChoosePlayer1.ValueMember = "id";

vi vil gerne have tilføjet en række "vælg spiller" øverst i comboboxen...tror du at du kan klare den?

...ps undskyld at jeg ikke lige fik nævnt at vi arbejder på en pda (.NET CF)
Avatar billede roschmann Nybegynder
30. oktober 2004 - 15:12 #14
er man nødtil at indsættte en post i den oprindelige tabel inden man laver databind på den....det kan da vel ikke passe....er der ikke en anden måde?
Avatar billede burningice Nybegynder
30. oktober 2004 - 18:18 #15
Avatar billede roschmann Nybegynder
30. oktober 2004 - 18:32 #16
skal den indsættes før eller efter der bliver databindet? kan nemlige ikke lige få det til at virke...
Avatar billede burningice Nybegynder
30. oktober 2004 - 18:37 #17
tror du skal gøre det efter... ellers vil den bare blive overskrevet når man databinder
Avatar billede roschmann Nybegynder
03. februar 2005 - 18:27 #18
tak
Avatar billede roschmann Nybegynder
03. februar 2005 - 20:10 #19
tak
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