Laden...

WinForms: ListBox aus DataTable füllen

Erstellt von KevinHappy vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.768 Views
K
KevinHappy Themenstarter:in
41 Beiträge seit 2015
vor 8 Jahren
WinForms: ListBox aus DataTable füllen

Hallo,

ich habe eine listBox, die die Daten aus einem DataTable Objekt laden soll. Die Daten kommen aus der Datenbank. Es wird auch keine listBox angezeigt.

Ich habe zum Test mal eine ComboBox genommen und dort versucht die Daten aus DT zu füllen und es funktioniert.

Das Füllen der Datenbank:


public DataTable getAlleArtikelInBox(string wagenbox)
        {
            DataTable dt = new DataTable();

            string[] split = wagenbox.Split(new Char[] { '!', 'ß', '-' });
            try
            {
                if (this.Connect() == true)
                {
                    MySqlCommand command = mysqlConnection.CreateCommand();
                    command.CommandText = "SELECT a.name FROM lvs_waegen AS w, lvs_auftrag_zu_position AS auzp, lvs_artikel AS a WHERE w.id = auzp.position_id AND auzp.artikel_id = a.id AND w.wagen = " + split[1] + " AND w.box = " + split[2];
                    MySqlDataReader Reader;
                    Reader = command.ExecuteReader();

                    dt.Columns.Add("name", typeof(string));
                    while (Reader.Read())
                    {
                        dt.Rows.Add(HttpUtility.HtmlDecode(Reader.GetValue(0).ToString()));
                    }
                    this.Disconnect();

                }
            }
            catch (MySqlException e)
            {
                Console.WriteLine("Fehler: " + e.Message + " | Nummer: " + e.Number.ToString() + "Fehler beim übertragen der Daten!");
            }
            catch (Exception e)
            {
                Console.WriteLine("Fehler: " + e.Message + " Fehler beim übertragen der Daten!");
            }
            return dt;
        }

Das ganze wird in ein byte Array umgewandelt und an den Client gesendet.

Der Code vom Client:



        
        public Verpacken2(Client client, string box, string gesamt, Verpacken1 verpacken1, Error error)
        {
            InitializeComponent();
            listBox1.Visible = false;
            this.client = client;
            this.box = box;
            this.gesamt = gesamt;
            this.verpacken1 = verpacken1;
            this.error = error;
            label3.Text = gesamt;
            label5.Text = gesamt;
            comboBox1.DisplayMember = "name";
            comboBox1.ValueMember = "name";
            listBox1.DisplayMember = "name";
            listBox1.ValueMember = "name";
            getDataTable();
        }

        public void getDataTable()
        {
            client.send(System.Text.Encoding.ASCII.GetBytes("datatablev|" + this.box));

            System.Threading.Thread.Sleep(1000);
            DataTable dt = new DataTable();
            BinaryFormatter bformatter = new BinaryFormatter();

            //Now deserialise
            byte[] d = client.receive();
            MemoryStream dtStream = new MemoryStream(d);
            dt = (DataTable)bformatter.Deserialize(dtStream);
            dtStream.Close();
            comboBox1.DataSource = dt;
            listBox1.DataSource = dt;
        }

Ich bin echt ratlos, da es ja bei der ComboBox funktioniert.

--
Vielen Dank

LG
Kevin

J
251 Beiträge seit 2012
vor 8 Jahren

Vllt. hilft folgendes weiter

Datatable to listbox

Evtl als Beiwerk zum Genießen 😃
[Artikelserie] SQL: Parameter von Befehlen

1.029 Beiträge seit 2010
vor 8 Jahren

Hi,

ich bin mal so dreist und behaupte das liegt an folgendem Schnipsel:

public Verpacken2(Client client, string box, string gesamt, Verpacken1 verpacken1, Error error)
        {
            ...
            listBox1.Visible = false;
            ...
        }

LG

K
KevinHappy Themenstarter:in
41 Beiträge seit 2015
vor 8 Jahren

Oh man, da hab ich mich gewundert und übersehe diese Zeile nicht. 😁

Danke 👍

--
Vielen Dank

LG
Kevin