Avatar billede j3ppah Novice
05. marts 2009 - 10:10 Der er 6 kommentarer og
1 løsning

SQL to Listbox Igen ;)

Fandt ud af jeg nægtede at give op... Kiggede på det der blev svaret sidst... Nu ser det ud til jeg får min Connection osv, men synes ikke rigtigt den læster noget... Den smider det i hvertfald ikke ind i min listbox... Her er koden...




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;

namespace PeopleCounterClient
{
    public partial class PeopleCounterClient : Form
    {
       
        public PeopleCounterClient()
        {
            InitializeComponent();
        }

        public class Store
        {
          public string id;
          public string name;
          public string date;

          public Store(string intputId, string inputName, string inputNameDate)
          {
            id = intputId;
            name = inputName;
            date = inputNameDate;
          }

          public override string ToString()
          {
            return name + "(" + id + ")";
          }
        }

        void Refresh_Click(object sender, EventArgs e)
        {
            //Åbner min connection
            SqlConnection con = new SqlConnection("Data Source=#####;Initial Catalog=#####;Integrated Security=SSPI");
            try
            {
                con.Open();

                //Fyrer min query af.
                SqlCommand sqlCom = new SqlCommand("SELECT    TOP 3 * FROM        #####.PeopleCounterLog WHERE    (ShopID = '226')", con);
                //Læser data
                SqlDataReader rdr = sqlCom.ExecuteReader();
                rdr = sqlCom.ExecuteReader();
               
                // print the CustomerID of each record

               
                //Laver en while lykke, der sig så længe den læser en linie data fra SQL
                while (rdr.Read())
                {
                    listBox1.Items.Clear();
                    while (rdr.Read())
                    {
                        Store s = new Store(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2));
                        listBox1.Items.Add(s);
                    }
                }

            }
            catch { };
        }
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
   
    }
}
Avatar billede windcape Praktikant
05. marts 2009 - 11:47 #1
Du bør databinde til en List<Store> istedet, og så ændre indholdet af denne.

Derudover bør du kører SuspendLayout() og ResumeLayout() før og efter du ændre indholdet for bedre performance.
Avatar billede j3ppah Novice
05. marts 2009 - 12:37 #2
Bedre performance er ikke nødvendigt lige nu, men ja tilføjer det nok alligevel jo.

Men giver stadig ikke svar på mit problem... Den vil ikke lave udtrækket ordenligt.
Avatar billede j3ppah Novice
05. marts 2009 - 12:48 #3
Nu når den ned i while lykken, men hopper ud efter den har læst Store s = New Store (osv)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;

namespace PeopleCounterClient
{
    public partial class PeopleCounterClient : Form
    {
       
        public PeopleCounterClient()
        {
            InitializeComponent();
        }

        public class Store
        {
          public string id;
          public string name;
          public string date;

          public Store(string intputId, string inputName, string inputNameDate)
          {
            id = intputId;
            name = inputName;
            date = inputNameDate;
          }

          public override string ToString()
          {
            return name + "(" + id + ")";
          }
        }

        void Refresh_Click(object sender, EventArgs e)
        {
            //Åbner min connection
            SqlConnection con = new SqlConnection("Data Source=Mimer;Initial Catalog=PeopleCounter;Integrated Security=SSPI");
            try
            {
                con.Open();

                //Fyrer min query af.
                SqlCommand sqlCom = new SqlCommand("SELECT    TOP 3 * FROM        innoteck.PeopleCounterLog WHERE    (ShopID = '226')", con);
                //Læser data
                SqlDataReader rdr = sqlCom.ExecuteReader();
                //rdr = sqlCom.ExecuteReader();
               
                // print the CustomerID of each record

               
                //Laver en while lykke, der sig så længe den læser en linie data fra SQL
                while (rdr.Read())
                {
                    listBox1.Items.Clear();
                    while (rdr.Read())
                    {
                        Store s = new Store(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2));
                        listBox1.Items.Add(s);
                        Console.WriteLine(s);
                        Console.ReadLine();
                    }

                }

            }
            catch { };
        }
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
   
    }
}
Avatar billede j3ppah Novice
05. marts 2009 - 14:52 #4
Baaah, problemet ligger selvfølgelig i at jeg henter dataen som strings.
Avatar billede aaberg Nybegynder
05. marts 2009 - 15:47 #5
Jeg ved ikke om du selv har set det, men du kalder Clear på din listbox inde i en while løkke. Og du har 2 while-løkker som itererer igennem datareaderen.

//Laver en while lykke, der sig så længe den læser en linie data fra SQL
while (rdr.Read())
{
  listBox1.Items.Clear();
  while (rdr.Read())
  {
      Store s = new Store(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2));
      listBox1.Items.Add(s);
      Console.WriteLine(s);
      Console.ReadLine();
  }

}

prøv at skifte det ud med:

//Laver en while lykke, der sig så længe den læser en linie data
fra SQL

listBox1.Items.Clear();
List<Store> stores = new List<Store>();

while (rdr.Read())
{
  stores.Add(new Store(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2)));
  Console.WriteLine(s);
  Console.ReadLine();
}

listBox1.DataSource = stores;
Avatar billede j3ppah Novice
30. juni 2010 - 11:10 #6
Smid lige et svar, er ved at ryde op i ulukkede tråde.
Kan ikke huske om jeg bruge din løsning ;) men fik det i hvertfald til at virke.
Avatar billede j3ppah Novice
13. august 2010 - 10:57 #7
lukker eftersom der ikke er blevet afgivet et svar fra aaberg_cc.
Skriv endelig hvis du stadig er derude og vil have dine points, så laver vi lige en ny tråd.
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