Avatar billede trumf Nybegynder
29. september 2005 - 20:09 Der er 1 kommentar og
1 løsning

clear listbox og fyld den igen

Hejsa E

Jeg har et problem med en listbox...
Jeg bruger en funktion til at fylde den med data fra et xml doc.
Listboksen fyldes når applicationen starter og så kan man genfylde den igen, enten ved at søge på en streng og fylde den med resustatet, eller ved bare at fylde den helt op igen.

        public string LoadData(string srcStr)
        {
            Constants cnt = new Constants();
            Functions fcn = new Functions();
            string returData;
            if (!File.Exists(cnt.dataPath))
            {
                fcn.GetData();
            }
            try
            {
                returData = "Data loades";
                string wineData = "";
                string wineyear = "";
                string classification = "";
                DataSet dsWine = new DataSet();
                dsWine.ReadXml(cnt.dataPath);

                foreach (DataRow dr in dsWine.Tables["DealerWine"].Rows)
                {
                    classification = dr["classification"].ToString();
                    wineyear = dr["wineyear"].ToString();
                    wineData = dr["name"].ToString();
                    if (classification != "")
                    {
                        wineData += " " + classification;
                    }
                    if (wineyear != "0")
                    {
                        if (wineyear != "1")
                        {
                            wineData += " " + wineyear;
                        }
                        else
                        {
                            wineData += " UA";
                        }
                    }
                    dr["name"] = wineData;
                    dsWine.AcceptChanges();
                    if (srcStr.Length>0)
                    {
                        if (dr["name"].ToString().IndexOf(srcStr.ToString())>-1)
                        {
                            lstShowWines.Items.Add(dr["name"].ToString());
                        }
                    }
                    else
                    {
                        lstShowWines.Items.Add(dr["name"].ToString());
                    }
                }
                lstShowWines.DataSource = dsWine.Tables["DealerWine"];
                lstShowWines.DisplayMember = "name";
                lstShowWines.ValueMember = "guid";
                //lstShowWines.Items.Clear();
                lstShowWines.DataSource = null;
                dsWine.Clear();
            }
            catch (Exception e)
            {
                returData = e.ToString();//"Der skete en fejl ved hentning af data";
                MessageBox.Show(returData);
            }
            return returData;
        }

ovenstående fyldes op og tømmes igen og så er jeg jo lige vidt...
Hvis jeg udkommenterer
//lstShowWines.DataSource = null;
//dsWine.Clear();
kommer der noget i listboksen, men så kommer der en fejl når jeg søger eller når der genfyldes:
"cannot modify the items collection when the datasource is set"
http://www.google.dk/search?hl=da&q=cannot+modify+the+items+collection+when+the+datasource+is+set&btnG=Google-s%C3%B8gning&meta=

Håber nogen kan hjælpe med at opklare denne
Avatar billede trumf Nybegynder
29. september 2005 - 21:09 #1
OK det kan koges ned til:

                foreach (DataRow dr in dsWine.Tables["DealerWine"].Rows)
                {
                    classification = dr["classification"].ToString();
                    wineyear = dr["wineyear"].ToString();
                    wineData = dr["name"].ToString();
                    if (classification != "")
                    {
                        wineData += " " + classification;
                    }
                    if (wineyear != "0")
                    {
                        if (wineyear != "1")
                        {
                            wineData += " " + wineyear;
                        }
                        else
                        {
                            wineData += " UA";
                        }
                    }
                    dr["name"] = wineData;
                    dsWine.AcceptChanges();
                    if (srcStr.Length>0)
                    {
                        if (dr["name"].ToString().IndexOf(srcStr.ToString())>-1)
                        {
                            lstShowWines.Items.Add(dr["name"].ToString());
                        }
                    }
                    else
                    {
                        lstShowWines.Items.Add(dr["name"].ToString());
                    }
                }
                lstShowWines.DataSource = dsWine.Tables["DealerWine"];
                lstShowWines.DisplayMember = "name";
                lstShowWines.ValueMember = "guid";

Når jeg klikker på knappen der skal fylde listboksen på ny, få jeg fejlen:
cannot modify the items collection when the datasource is set
i linierne ud for lstShowWines.Items.Add(dr["name"].ToString()); alt efter om der søges eller ej.
Avatar billede trumf Nybegynder
01. oktober 2005 - 17:28 #2
lukker... :(
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
Kurser inden for grundlæggende programmering

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