Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

DataGridView i redosled kolona - Select upit

[es] :: .NET :: .NET Desktop razvoj :: DataGridView i redosled kolona - Select upit

[ Pregleda: 2082 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mish_ns
Miloš Krstin

Član broj: 159930
Poruke: 1105
*.dynamic.isp.telekom.rs.



+18 Profil

icon DataGridView i redosled kolona - Select upit08.12.2011. u 13:45 - pre 150 meseci
Pozdrav svima...
Imam sledeći problem.
Koristim jednu datagridview kontrolu za prikaz podatakaiz baze. Kod prvog select upita imam 4 kolone koje mise vracaju iz baze, a kod drugog 4.
Npr.
Upit 1: Select b,c,d,e from tabela
E sad u datagridview kontroli dobijem taj redosled kolona.
b c d e

Upit 2: select a,b,c,d,e from tabela
Ovde u datagridview kontroli dobijam ovakav redosled
b c d e a

Kako da dobijem redosled kolona koji je naveden u upitu?
DataGridView popunjavam preko datatable objekta, a baza je mysql.
Probavao sam da čistim datatable sa Clear(),zatim da određujem poziciju kolone preko setordinal, zatim datagridview.dataSource = nothing, ali ništa ne pomaže.

Gledao sam i po netu ali mi nije jasno kako da ovo izvedem.

Problem sličan ovome:

http://forums.asp.net/t/1612209.aspx/1

[Ovu poruku je menjao mish_ns dana 08.12.2011. u 15:44 GMT+1]
 
Odgovor na temu

mish_ns
Miloš Krstin

Član broj: 159930
Poruke: 1105
..106.109.adsl.dyn.beotel.net.



+18 Profil

icon Re: DataGridView i redosled kolona - Select upit08.12.2011. u 17:20 - pre 150 meseci
Za sad jedini način koji mislim da radi, al nisam još uvek probao je da stavim dva datagridview (dgv) jedan preko drugog i da svaki punim posebno.

Recimo kad izvršim prvi upit prikazujem dgv1, a dgv2 skrivam i obrnuto.

Code:

Private Sub Button1_Click
        Dim myDataTable As New DataTable
        
        dgvProba1.Visible = False
        dgvProba.Visible = True

        sql = "SELECT opis,kolicina FROM tabela"

       
        conn.Open()
        cmd.Connection = conn
        cmd.CommandText = sql
        myAdapter.SelectCommand = cmd
        myAdapter.Fill(myDataTable)
        dgvProba.DataSource = myDataTable
        conn.Close()
    End Sub

    Private Sub Button2_Click
        Dim myDataTable As New DataTable

        dgvProba1.Visible = True
        dgvProba.Visible = False

        sql = "SELECT sifra,opis,kolicina FROM tabela"


        conn.Open()
        cmd.Connection = conn
        cmd.CommandText = sql
        myAdapter.SelectCommand = cmd
        myAdapter.Fill(myDataTable)
        dgvProba1.DataSource = myDataTable
        conn.Close()

    End Sub
 
Odgovor na temu

nikitaGradov
Beograd

Član broj: 223576
Poruke: 206
92.244.132.*



+3 Profil

icon Re: DataGridView i redosled kolona - Select upit09.12.2011. u 09:48 - pre 150 meseci
U C#-u ces redosled kolona postici sa:
Code:

dSetPomocni.Clear();
mojSqlDataAdapter.Fill(dSetPomocni);
dataGridViewZaPrikaz.DataSource = null;
dataGridViewZaPrikaz.DataSource = dSetPomocni.Tables[0]; // ili '=dSetPomocni.Tables["ImeTabeleUBazi"]; - ako je SELECT samo nad jednom tabelom



Programming is fun, but writing good software is hard ...
 
Odgovor na temu

mish_ns
Miloš Krstin

Član broj: 159930
Poruke: 1105
*.dynamic.isp.telekom.rs.



+18 Profil

icon Re: DataGridView i redosled kolona - Select upit09.12.2011. u 10:41 - pre 150 meseci
Probao sam i tako...
Doduše ja sam radio sa DataTable objektom, a vidim da je u primeru iskoriscen DataSet.

Iskreno za moje potrebe nisam koristio DataSet, pa bih iskoristio priliku da pitam koja je razlika između DataSet-a i DataTable?

Sve sto sam nalzio po netu je da DataSet utvari predstavlja vise DataTable objekata.
 
Odgovor na temu

AMD guy
Miroslav
.NET developer

Član broj: 128930
Poruke: 1007

Sajt: www.its.edu.rs


+38 Profil

icon Re: DataGridView i redosled kolona - Select upit09.12.2011. u 11:02 - pre 150 meseci
Pa dataset je u sustini kolekcija datatable objekata.
Sto se tice perfomansi, datatable je laksi i brzi od dataset-a pogotovo kada vrsis jednostavne upite koje vracaju jednostavan SELECT.

Dataset moze da sadrzi vise tabela i pravi relacije izmedju njih, dok datatable ne moze.
http://i.imgur.com/V3feW.jpg
http://on.wsj.com/H9yjz6 -- India Graduates Millions, but Too Few Are Fit to Hire
 
Odgovor na temu

nikitaGradov
Beograd

Član broj: 223576
Poruke: 206
92.244.132.*



+3 Profil

icon Re: DataGridView i redosled kolona - Select upit09.12.2011. u 11:23 - pre 150 meseci
Da budem iskren, kada sam poceo da se bavim .NET-om, prvi primjeri na koje sam naletio, sadrzavali su rjesenja sa DataSet-om i tako sam nastavio da ih primjenjujem.

DataSet je, kao sto si i sam naveo, kolekcija od DataTables. Ako je DataTable, da je tako nazovem, implementacija jedne tabele, iz baze podataka, u memoriji racunara, onda je DataSet implementacija vise tabela, iz baze, u memoriji.

Recimo, rezultate SELECT upita, iz vise tabela, mozes da smjestis u vise tabela jednog DataSet-a:

Code:

komanda.CommandText = upit; // setuj property CommandText (za instancu SqlCommand)
adap.SelectCommand = komanda; // setuj property SelectCommand (za instancu SqlDataAdapter)
adap.Fill(podaci, imeTabele); // ucitaj podatke iz navedene tabele


Onda mozes da, primjera radi, koristis odredjenu tabelu, iz DataSet-a, kao DataSource za dataGridView:

Code:

dataGridView1.DataSource = dSet.Tables[indeks]; // ili : dSet.Tables["ImeTabele"];


Ja DataSet koristim kada kreiram relacije (DataRelation) izmedju tabela. Recimo:
Code:

                BindingSource  jobovi; 
                BindingSource  takeOff;
                DataSet podaci;

                DataRelation relJobTakeOff = new DataRelation("RelJobTakeOff",
                podaci.Tables["JobsInfo"].Columns["ID"],
                podaci.Tables["JobTakeOff"].Columns["IDJob"]);
                podaci.Relations.Add(relJobTakeOff); // dodaj relaciju

                jobovi.DataMember = "JobsInfo";
                jobovi.DataSource = podaci;
               takeOff.DataMember = "RelJobTakeOff";
               takeOff.DataSource = jobovi;


E sad, da li postoji razlika izmedju: dSet.Clear() i dTable.Clear(), ja zaista ne znam ...

Ako ne mozes drugacije da se snadjes, mozes pokusati i ovako (uzmi u obzir da ja radim u C#-u - ako sam dobro vidio tvoj primjer, radi se o VB?):
- koristi samo jedan upit (ako sam dobro razumio, koristis istu tabelu u oba upita), koji ti vraca podatke iz kolona: 'a', 'b', 'c', 'd', 'e',
- dodaj kolone (u DesignView-u) u svoj dataGridView i nazovi ih, recimo: 'a', 'b', 'c', 'd', 'e',
- kolonu 'a', u dataGridView-u, setuj kao nevidljivu: 'Visible' = 'false',
- setuj 'DataSource' property (od dataGridView-a) na sledeci nacin:
Code:

// pretpostavimo da si podatke ucitao u DataSet, koji se zove: 'pod'
dataGridView1.AutoGenerateColumns = false;
dataGridView1.Columns["a"].DataPropertyName = pod.Tables["ImeTabele"].Columns["a"].ColumnName;
dataGridView1.Columns["b"].DataPropertyName = pod.Tables["ImeTabele"].Columns["b"].ColumnName;
dataGridView1.Columns["c"].DataPropertyName = pod.Tables["ImeTabele"].Columns["c"].ColumnName;
dataGridView1.Columns["d"].DataPropertyName = pod.Tables["ImeTabele"].Columns["d"].ColumnName;
dataGridView1.Columns["e"].DataPropertyName = pod.Tables["ImeTabele"].Columns["e"].ColumnName;
dataGridView1.DataSource = pod.Tables["ImeTabele"];
// zavisno od konteksta (upita) setuj kolonu 'a' da je visible/not visible


Programming is fun, but writing good software is hard ...
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: DataGridView i redosled kolona - Select upit

[ Pregleda: 2082 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.