Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


listBox.Items.Add - vad har jag missat?

Postades av 2010-02-01 22:21:53 - Karin Askeroth, i forum c# (c-sharp), Tråden har 9 Kommentarer och lästs av 2016 personer

Jag misslyckas med att visa data i en listbox (åtminstone tror jag det är där felet ligger). Det här borde ju vara busenkelt, jag får ursäkta mig med att jag är nybörjare. Jag lägger in kod för hela funktionen, men jag tror felet ligger i else-satsen på slutet.

Jag får inga felmeddelanden, så jag har svårt att hitta vad som är fel.

Jag vore mycket tacksam för lite hjälp att hitta felet, och ber om ursäkt om koden är ostädad. Tack på förhand!

//klickad checkbox visar vilka som anmält sig till en tävling
        protected void CheckDeltagare_Clicked(Object sender, EventArgs e) 
        {
            ListBoxDeltagare.Items.Clear();

            int[] medlemsnummer = new int[10000];
            int m = 0;
            int j = 0;

            StringBuilder str = new StringBuilder();
            int TävlID;
            string status;
            int deltagare;

            //kontrollerar vilken checkbox som klickats
            for (int i = 0; i < GridViewTävling.Rows.Count; i++)
            {
                GridViewRow row = GridViewTävling.Rows[i];
                bool isChecked = ((CheckBox)row.FindControl("VisaDeltagare")).Checked;
                if (isChecked)
                {
                    NpgsqlConnection conn = new NpgsqlConnection(config);
                    conn.Open();

                    //tävlingens status kontrolleras
                    TävlID = Convert.ToInt32(GridViewTävling.Rows[i].Cells[3].Text);  
                    status = GridViewTävling.Rows[i].Cells[1].Text;
                    deltagare = Convert.ToInt32(GridViewTävling.Rows[i].Cells[6].Text);
                    
                    string sql = "SELECT tstatus FROM tavling WHERE tavlingsid =" + TävlID;
                    NpgsqlCommand comm = new NpgsqlCommand(sql, conn);
                    NpgsqlDataReader dr = comm.ExecuteReader();
                    dr.Read();

                    dr[0].ToString(); 

                        if  (status.Equals("Planerad"))//om tävlingen befinner sig i planeringsstadiet
                        {
                            Response.Write("<script> alert('Tävlingen har inga anmälda deltagare, den är inte öppen för anmälningar än.');</script>");
                            return;
                        }

                        if (status.Equals("Öppen")) //om tävlingen är öppen för anmälningar
                        {
                            TävlID = Convert.ToInt32(str.Append(GridViewTävling.Rows[i].Cells[3].Text));

                            //tar fram anmälda deltagare till vald tävling
                            string sql2 = "SELECT medlemsnummer FROM deltagare WHERE deltagare.tavlingsid VALUES =" + TävlID;

                            NpgsqlConnection conn2 = new NpgsqlConnection(config);
                            conn.Open();

                            NpgsqlCommand comm2 = new NpgsqlCommand(sql2, conn2);
                            NpgsqlDataReader dr2 = comm.ExecuteReader();
                            dr2.Read();

                            medlemsnummer[m] = Convert.ToInt16(dr[0]);
                            m++;

                            dr[0].ToString();

                            if (deltagare.Equals(" ")) //om tävlingen inte har några anmälda deltagare
                            {
                                Response.Write("<script> alert('Tävlingen har inga anmälda deltagare än.');</script>");
                                return;
                            }

                            else
                            {
                                //tar fram uppgifter om ovan framtagna medlemmar
                                string sql5 = "SELECT fornamn, efternamn, handikapp FROM medlemmar WHERE medlemmar.medlemsnummer = " + medlemsnummer[j];

                                NpgsqlCommand comm5 = new NpgsqlCommand(sql5, conn);
                                NpgsqlDataReader dr5 = comm5.ExecuteReader();
                                dr5.Read();

                                ListBoxDeltagare.Items.Add("Deltagare");  //lägger texten "Deltagare" först i listan

                                while (dr5.Read())
                                {
                                    ListBoxDeltagare.Items.Add(dr5[0] + " " + dr5[1] + " " + dr5[2]);
                                }

                                comm.ExecuteNonQuery();
                                dr.Close();
                                dr5.Close();
                            }  
                        }
}
}


Svara

Sv: listBox.Items.Add - vad har jag missat?

Postades av 2010-02-02 07:38:33 - Mikael Johansson

Vet inte om jag missar det men i sql5 använder du medlemsnummer[j] som parameter. Du har satt j=0 och den räknas aldrig upp. Då kan det vara att den får ett värde på en post där ingen information finns. Även om informationen finns så kommer du få max 1 person i listan.

Kan vara något annat jag missar med.


Svara

Sv: listBox.Items.Add - vad har jag missat?

Postades av 2010-02-02 17:27:12 - Peter Björklund

Prova att ta bort dr5.Read(); innan whileloopen oc se vad som händer. Du anger att datareadern skall läsa två ggr. En gång före whileloopen och en gång i loopen.


Svara

Sv:listBox.Items.Add - vad har jag missat?

Postades av 2010-02-02 18:56:32 - Karin Askeroth

Hans: Tack för svar! Ok, fast då borde jag åtminstone få upp 1 person i listan, eller? Jag ändrar till 10000 så blir det en ordentlig marginal.


Svara

Sv:listBox.Items.Add - vad har jag missat?

Postades av 2010-02-02 18:58:47 - Karin Askeroth

Peter: Tack för svar! Jag har tagit bort den, samt två andra dr.Read(); som låg dubbelt, men resultatet blir fortfarande som tidigare.


Svara

Sv: listBox.Items.Add - vad har jag missat?

Postades av 2010-02-02 19:53:12 - Mikael Johansson

Det är ett par saker som gör mig fundersam.
Dels när du läser från DB använder du dr.Read();. Du borde använda
<code>
while(dr.Read())
{
//Himla massa kod
}
</code>

Sen som jag skrev innan, jag ser inte att du uppdaterar j. I else borde du ha liknande:

<code>
for(int j = 0; j < 10000; j++)
{
string sql5 = "SELECT fornamn, efternamn, handikapp FROM medlemmar WHERE medlemmar.medlemsnummer = " + medlemsnummer[j];
....
}
</code>

Sen har du ListBoxDeltagare.Items.Add("Deltagare");. Får du upp "Deltagare" i listboxen?
Mitt råd är att dela upp all kod i flera object. Blir mer överskådligt och lättläst. Har du debuggat koden? Får du några fel då? Får du ut värden från db?


Svara

Sv:listBox.Items.Add - vad har jag missat?

Postades av 2010-02-02 21:03:09 - Karin Askeroth

Hans: Tack igen!

Jag har följt dina tips, men får fortfarande inte ut något i listboxen, inte ens "Deltagare". Det är därför jag tror det är fel på kontakten med listboxen. Debuggingen funkar utan felmeddelanden. Apropå att få ut värden så vet jag inte hur man kollar det i Visual Web Developer som jag använder.


Svara

Sv: listBox.Items.Add - vad har jag missat?

Postades av 2010-02-02 22:23:54 - Peter Björklund

Blir denna någonsin true? Körs for-loopen?

bool isChecked = ((CheckBox)row.FindControl("VisaDeltagare")).Checked;


Svara

Sv:listBox.Items.Add - vad har jag missat?

Postades av 2010-02-03 12:30:25 - Karin Askeroth

Peter: Jag såg inte ditt meddelande förrän nu, men jag har fått det att funka!

Jag har just nu begränsat det till en del av koden - att få ut något i listboxen. Jag kollar även om det finns något att skriva ut överhuvudtaget. Så här ser det ut om någon är nyfiken.

protected void CheckDeltagare_Clicked(Object sender, EventArgs e)
        {
            ListBoxDeltagare.Items.Clear();

            StringBuilder str = new StringBuilder();
            int TävlID;
            string status;
            int deltagare;
            GridViewRow row = null;

            //kontrollerar vilken checkbox som klickats
            for (int i = 0; i < GridViewTävling.Rows.Count; i++)
            {
                row = GridViewTävling.Rows[i];
                bool isChecked = ((CheckBox)row.FindControl("VisaDeltagare")).Checked;
                if (isChecked)
                    break;
            }

            NpgsqlConnection conn = new NpgsqlConnection(config);
            conn.Open();

            //tävlingens status kontrolleras
            TävlID = Convert.ToInt32(row.Cells[3].Text);
            status = row.Cells[1].Text;
            deltagare = Convert.ToInt32(row.Cells[6].Text);


            //tar fram anmälda deltagare till vald tävling
            string sql2 = "SELECT deltagare.medlemsnummer, medlemmar.fornamn, medlemmar.efternamn, medlemmar.handikapp FROM deltagare, medlemmar WHERE deltagare.tavlingsid =" + TävlID + " AND medlemmar.medlemsnummer = deltagare.medlemsnummer";

            NpgsqlConnection conn2 = new NpgsqlConnection(config);
            conn2.Open();

            NpgsqlCommand comm2 = new NpgsqlCommand(sql2, conn2);
            NpgsqlDataReader dr2 = comm2.ExecuteReader();

            ListBoxDeltagare.Items.Add("Deltagare");  //lägger texten "Deltagare" först i listan

            while (dr2.Read())
            {
                if (dr2.IsDBNull(0)) //om tävlingen inte har några anmälda deltagare
                {
                    Response.Write("<script> alert('Tävlingen har inga anmälda deltagare än.');</script>");
                    return;
                }

                ListBoxDeltagare.Items.Add(dr2[0] + " " + dr2[1] + " " + dr2[2]);
            }


Tack för hjälpen! Nu ska jag ta tag i resten av koden, men jag återkommer säkert någon gång med fler frågor :)


Svara

Sv: listBox.Items.Add - vad har jag missat?

Postades av 2010-02-04 03:36:58 - Joakim Åhl

ett litet knep jag brukar göra för att se att SQLn skapa rätt är att skapa en temp string. Sen lägger du en breakpoint på raden efter. Det gör att du kan föra muspekaren över stringen och kopiera SQL-strängen och provköra eller analysera den och sen vad du får för värden.

Då ser man om det är SQLn eller in-värdera som är fel.


Svara

Nyligen

  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 635
27 958
271 741
680
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies