C# listView ,automatyczne dopsowywanie ilości kolumn w zależnośic od tabeli

0

Witam. Stworzyłem trochę sam,a trochę z tutorialem taką prostą apke służącą do komunikacji z bazą i pobierania z niej zawartości tabeli ( na razie jednej zaszytej w kodzie ) . Jednak kod działa tylko dla tabeli o 7 kolumnach , dla każdej innej tabeli muszę robić zmianę w kodzie. Mogę w jakiś sposób zrobić
tak ,żeby program sam dopasowywał się do ilości kolumn w tabeli oraz dodatkowo pobierał ich nazwy i sam ustawiał je jako nazwy kolumn w listView ??? Zaznaczam ,ze od około miesiąca zajmuję się c# i takie rzeczy sprawiają mi jeszcze problem .

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace SampleListview
{
    public partial class Form1 : Form
    {
        string stab = "Select * from Pracownicy";

        public Form1()
        {
            InitializeComponent();
        }

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)  
                {   }
        
        private void button1_Click(object sender, EventArgs e)
        {
            ADODB.Recordset rs = new ADODB.Recordset();
            ADODB.Connection con = new ADODB.Connection();
            con.ConnectionString = ConnectionClass.GetConnection();
            con.Open();
           
            rs.Open(stab, con, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockBatchOptimistic);
            if (rs.EOF == false)
            {
               
                listView1.Items.Clear(); 
                do
                {
** Sztywno ustawione dla tabeli o 7 kolumnach indeks od 0 do 6  **
                    listView1.Items.Add(rs.Fields[0].Value.ToString());
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add(rs.Fields[1].Value.ToString());    
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add(rs.Fields[2].Value.ToString());
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add(rs.Fields[3].Value.ToString());
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add(rs.Fields[4].Value.ToString());
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add(rs.Fields[5].Value.ToString());
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add(rs.Fields[6].Value.ToString());   
                
                 
                    rs.MoveNext();

                } while (!rs.EOF);
                {
                    rs.Close();
                    con.Close();

                }

            }
        }


        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
        {                  
                 ///wybór tabeli                                
        }
    }
}
1

zamiast 7 poleceń zrób pętlę od 0 do rs.Fields.Count - 1 i tyle

1

A nie lepiej zbindować DataTable z DataGridem?

1

Jak zbindujesz DataGridView z DataTable zawierającą tabelę mySql to wtedy DataGridView sam utworzy odpowiednią ilość kolumn i je nazwie oraz utworzy elementy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1