DataGridview jeho vymazani - VB.Net 2010   zodpovězená otázka

VB.NET, Databáze

Zdravim. Da se nejak programove zrusit propojeni mrizky s daty a zrusit jeji nastavenia pak do ni nacist nova data? Pro ilustraci. Mam databazi se sloupci A,B,C,D,E. Prvnim SQL nacte A,C,E a to se mi zobrazi v datagridView. Pak ale potrebuji zpracovat druhy SQL ktery ma zobrazit B,C,D,E, ale v mrizce zustane nadale aktivni i sloupec A, i kdyz bez dat, a poradi sloupcu je potom A,C,E,B,D.

Pri opacnem zpracovani dotazu je stejne jen s obracenou logikou. Nejdrive SQL2 OK, pak SQL1 a mrizka v poradi B,C,D,E,A, kde pak sloupce B a D jsou prazdne.

Jak donutit datagridview aby si vzdy nastavil sloupce podle aktualniho dotazu?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Předpokládám, že používáte nějaký režim, kdy se sloupce tvoří automaticky a tento režim vám vyhovuje.

Nestačilo by před nastavením nového datového zdroje jednoduše všechny sloupce odstranit?

dataGridView1.Columns.Clear()
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak to uz jsem zkusil. Bez vysledku. Jede si to stale svym stylem tak ze po druhem dotazu jsou tam opet i sloupce z predchoziho.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkuste sem dám relevantní kus kódu, kterým ten DataGridView plníte (tj. provádíte tu výměnu jeho dat zdroje).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dalsi moznost jak zobrazit/skryt sloupec manualne.


// ....

dataGridView.Columns[0].Visible = true|false
dataGridView.Columns[1].Visible = true|false
dataGridView.Columns[2].Visible = true|false

// ....

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vzhledem k tomu ze tento datagrid ma zobrazovat postupne vysledky cca 100 dotazu, kdy se jeste meni i nazvy sloupcu je toto nerelane. To uz je pak schudnejsi mit na formu tolik gridu kolik je ruznych dotazu a to mi pripada taky ponekud sileny.

Kousek kodu. Jedna se o dve tlacika ktera to plni.

Private Sub CerpaSpotrNS_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CerpaSpotrNS.Click

con.ConnectionString = " ..."

cmd.Connection = con

cmd.CommandText = " SELECT A, C, E ..."

da.SelectCommand = cmd

dt.Clear()

da.Fill(dt)

dataGridView.DataSource = dt

con.Close()

End Sub

Private Sub CerpaSpotrNJ_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CerpaSpotrNJ.Click

con.ConnectionString = "..."

cmd.Connection = con

cmd.CommandText = " SELECT B,C,D,E ..."

da.SelectCommand = cmd

dt.Clear()

da.Fill(dt)

dataGridView.DataSource = dt

con.Close()

End Sub

--

Priznam se ze jsou dlouho odolaval netu a drzel se VB6, ale faktem je ze na "trakari" se uz dneska jezdit neda, ale mnoho veci tam bylo jaksi rozumnejsich.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dekuji za snahu o pomoc. Uz se to povedlo. Jen to stalo par hodin neuspesneho hledani vsude mozne na netu bez valneho vysledku a nakonec takova prkotina.

Je nutne "pravdepodobne" tam jeste pred fill dat "dt.columns.clear" a datagrid se vycisti.

Aspon ted to s timto funguje tak jak ma.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vždy je lepší, před plněním kolekce, vždy kolekci nejdříve promazat

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback