DataGridView nezobrazuje   zodpovězená otázka

VB.NET

Dobrý den,

dělal jsem si prohlížeč databáze přesně podle článku "SQL Server 2005 Compact Edition". Problém je, že Grid i po bezchybném spuštění zustane šedý a bez dat. Cestu k .sdf mám správně. Nesetkal se někdo s něčím podobným? Jak to rozchodit?

Děkuji.

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

Dobrý den, hoďte sem kód, kterým to plníte. Bez něj Vám tu asi nikdo neporadí.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
Public Class Form1
    Dim con As SqlCeConnection
    Dim com As SqlCeCommand
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        'připojit se k databázi
        con = New SqlCeConnection("Data Source=C:\Memory.sdf")
        con.Open()
        com = New SqlCeCommand("SELECT * FROM [jmena]", con)
        DataGridView1.DataSource = com.ExecuteResultSet(ResultSetOptions.Updatable Or ResultSetOptions.Scrollable)
        'uložit změny a zavřít spojení s databází
        DataGridView1.CancelEdit()
        com = Nothing
        con.Close()
    End Sub
End Class

Zde je kod.

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

Voláte metódu CancelEdit, ktorá zahodí všetky zmeny(Popis metódy z MSDN: Cancels edit mode for the currently selected cell and discards any changes.).Bude potrebné zavolať inú metódu namiesto nej, možno EndEdit.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Bohužel, stále žádná změna, navíc je to kod z příkladu zde na webu, takže předpokládám že jiným funguje...

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

Skúste ešte iné metódy toho DataGridViewu, alebo sa poobzerajte po príkladoch na MSDN a inde na internete a ak nájdete niečo podobné, vyskúšajte z toho skopírovať tú časť, čo Vám nejde.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Jistě, že příklad funguje. Poslední tři řádky jsou ukončení práce s tabulkou a patří do Form1_FormClosing, aby se provedli až při uzavírání formuláře. Ve Form1_Load se ukončení práce s daty provede v zápětí po jejich načtení, proto je nemůžete vidět. Vyhoďte poslední 4 řádky z FormLoad a vložte je do procedury FormClosing:

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    'uložit změny a zavřít spojení s databází
    DataGridView1.CancelEdit()
    com = Nothing
    con.Close()
  End Sub

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

Děkuji, to jsem si neuvědomil, ovšem i po přepsání problém přetrval :( stále žádná načtená data..

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

Pak je chyba v Memory.sdf ať obsahu nebo jeho dostupnosti.

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

Doporučuji zkusit novou aplikaci, nastavit reference na System.Data.SqlServerCe.dll, vložit DataGridView a následující kód a spustít

 Public Class Form1
   Dim con As SqlCeConnection
   Dim com As SqlCeCommand

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     'připojit se k databázi
     con = New SqlCeConnection("Data Source=C:\Memory.sdf")
     con.Open()
     com = New SqlCeCommand("SELECT * FROM [Employees]", con)
     DataGridView1.DataSource = com.ExecuteResultSet(ResultSetOptions.Updatable Or ResultSetOptions.Scrollable)
   End Sub

   Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
     'uložit změny a zavřít spojení s databází
     DataGridView1.CancelEdit()
     com = Nothing
     con.Close()
   End Sub

 End Class

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

OPRAVA:

Kód jsem zkusil na databázi Northwind.sdf - funguje! V sem vloženém kódu jsem opravil na Memory.sdf, ale zapomněl opravit "SELECT * FROM [Employees]" na vaše "SELECT * FROM [jmena]"

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

Máte pravdu, skutečně to funguje, jdu hledat problem u své knihovny, děkuji.

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