Avatar billede anders_cp Nybegynder
13. februar 2009 - 16:18 Der er 8 kommentarer og
1 løsning

Tilføj element til comboelement

Hej
Nedenstående kode udfylder en dropdown-boks. Mit problem består i øverst at tilføje et tomt fejlt eller et felt med en standardværdi (eks: <Vælg operativsystem>).
mit forslag:
comboBoxOPsystem.Items.Insert(0,new CustomItem("", 0));
virker IKKE.

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 arne_v Ekspert
13. februar 2009 - 17:17 #1
Det maa skulle indsaettes i op ikke i comboBoxOPsystem hvor det bliver overskrevet med op.
Avatar billede anders_cp Nybegynder
14. februar 2009 - 12:09 #2
NÆSTEN perfekt ;)

Bliver nu indsat nederst i comboboxen, men jeg ønsker feltet øverst..
Kode:
        private void PopulateAllOPsystem()
        {
            driverdatabaseDataSetTableAdapters.OperatingSystemTableAdapter OPadapter =
                new WindowsDrivere.driverdatabaseDataSetTableAdapters.OperatingSystemTableAdapter();

            driverdatabaseDataSet.OperatingSystemDataTable op;
            // op = ("<vælg>", 0);
            comboBoxOPsystem.DisplayMember = "OPName";
            comboBoxOPsystem.ValueMember = "OperatingSystemID";
            op = OPadapter.GetOperatingSystem();
            comboBoxOPsystem.DataSource = op;
            op.Rows.Add(0, new CustomItem("<vælg>", 0));
        }
Avatar billede arne_v Ekspert
14. februar 2009 - 14:25 #3
op.Rows.InsertAt fremfor op.Rows.Add måske
Avatar billede anders_cp Nybegynder
14. februar 2009 - 14:39 #4
op.Rows.InsertAt(0, new CustomItem("<vælg>", 0));

Error    1    The best overloaded method match for 'System.Data.DataRowCollection.InsertAt(System.Data.DataRow, int)' has some invalid arguments    E:\DriverProgram\WindowsDrivere\WindowsDrivere\FormModel.cs    276    13    WindowsDrivere

Error    2    Argument '1': cannot convert from 'int' to 'System.Data.DataRow'    E:\DriverProgram\WindowsDrivere\WindowsDrivere\FormModel.cs    276    30    WindowsDrivere

Error    3    Argument '2': cannot convert from 'WindowsDrivere.CustomItem' to 'int'    E:\DriverProgram\WindowsDrivere\WindowsDrivere\FormModel.cs    276    33    WindowsDrivere
Avatar billede arne_v Ekspert
14. februar 2009 - 17:04 #5
prøv:

op.Rows.InsertAt(new CustomItem("<vælg>", 0), 0);
Avatar billede anders_cp Nybegynder
14. februar 2009 - 17:42 #6
Dit forslag giver:
Error    1    The best overloaded method match for 'System.Data.DataRowCollection.InsertAt(System.Data.DataRow, int)' has some invalid arguments    E:\DriverProgram\WindowsDrivere\WindowsDrivere\FormModel.cs    275    13    WindowsDrivere

Error    2    Argument '1': cannot convert from 'WindowsDrivere.CustomItem' to 'System.Data.DataRow'    E:\DriverProgram\WindowsDrivere\WindowsDrivere\FormModel.cs    275    30    WindowsDrivere


Jeg har selv forsøgt:
op.Rows.Add(0, new CustomItem("<VÆLG>", 0));
men her sættes rækken nederst (og ikke øverst) i combo-boksen.

Kan man måske - på en eller anden måde - sætte rækken ind førend dataene hentes fra databasen? I stil med dette:
        private void PopulateAllOPsystem()
        {
            driverdatabaseDataSetTableAdapters.OperatingSystemTableAdapter OPadapter =
                new WindowsDrivere.driverdatabaseDataSetTableAdapters.OperatingSystemTableAdapter();
           
            driverdatabaseDataSet.OperatingSystemDataTable op;
            comboBoxOPsystem.DisplayMember = "OPName";
            comboBoxOPsystem.ValueMember = "OperatingSystemID";
                   
            // her indsættes  <vælg>

            // her indsættes/tilføjes databasens værdier
            op = OPadapter.GetOperatingSystem();
           
            comboBoxOPsystem.DataSource = op;
        }
Avatar billede arne_v Ekspert
14. februar 2009 - 17:57 #7
Nu har jeg læst lidt.

Prøv:

DataRow r = op.NewRow();
r[0] = "<vælg>";
r[1] = 0;
op.Rows.InsertAt(r, 0);
Avatar billede anders_cp Nybegynder
14. februar 2009 - 19:12 #8
1000 TAK :-)
Det virkede.

Jeg måtte ændre lidt:
DataRow r = op.NewRow();
r[0] = 0;
r[1] = "<VÆLG>";
op.Rows.InsertAt(r, 0);

r[0] er i mit tilfælde OperatingSystemID, som er en integer.

Læg et svar....
Avatar billede arne_v Ekspert
14. februar 2009 - 19:22 #9
godt det langt om længe kom til at virke

og svar
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