Jak číst data z databáze?   zodpovězená otázka

VB.NET, Algoritmy, Databáze

Zdravím Vás všechny,

jelikož včerejší dotaz jsme vyřešil, tak se vrátím k jiné ptázce:

pokud mám na Formu DataGriedView a nějaké Labley/Textboxy, tak jak načtu vybraný řádek (kliknutím do buňky) do těchto Labeů?

Zkuste mne aspoň navést na správnou cestu...

díky moc Dušan

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

K tomu tu je událost SelectionChanged. Upozorňuje na změnu výběru a tedy i na čas, kdy by bylo vhodné aktualizovat texty v labelech. Prakticky téměř identický příklad (jen toho dělá o dost více) uvádějí na MSDN:

http://msdn.microsoft.com/en-us/library/...

Všimněte si, že z té události volají v příkladu metodu UpdateLabelText(), která se postará o zaktualizovaní textových hodnot. Procházet jednu z kolekcí SelectedColumns (vybrané sloupce), SelectedRows (vybrané řádky) nebo SelectedCells (vybrané buňky) pro vás určitě nebude problém.

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

Díky za tip...

Jinak to problém asi bude, ale pokusím se s tím poprat...

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

Máte událost, která informuje o změně vybrané buňky a pak kolekcy vybraných řádků / sloupců. Tak se perte, na konkrétní dotazy se odpovídá lépe... :-)

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

Tak to teď studuju, asi to bude fungovat (určitě), ale já měl spíš namysli při kliknutí do buňky zjistit ID záznamu z v databázi a z databáze doplnit potřebné informace. v DataGridView totiž nemám zobrazené všechny položky (a nechci tam mít ani ID záznamu)

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

No osobně bych si tam id dal do skrytého sloupce je to myslím praktické a id mi přijde jako jednoznačný identifikátor záznamu alespoň to tak používám

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

Jo jo na to jsem už přišel, ale pořád nemůžu přijít na to co mi dává číslo řádku.

Použil jsem to takhle:

        Dim CisloRadku As String
        Dim Jmeno As String
        Dim counter As Integer
 CisloRadku = (DataGridView1.Rows(counter).Cells("CustomerIdDataGridViewTextBoxColumn").Value.ToString())
        Jmeno = (DataGridView1.Rows(counter).Cells("FirstNameDataGridViewTextBoxColumn").Value.ToString())


        Label1.Text = CisloRadku
        Label2.Text = Jmeno
        MsgBox(counter)

ale nejsem schopný načíst hodnotu counter

nějak mi nedochází jak funguje (v téhle ukázce cyklus For)

Když pak získám hodnotu číslo řádku (ID), tak se už dostanu do databáze a můžu pracovat s ní... (aspoň teda doufám)

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

Nouze naučila Dušana housti :)

takže řešení je takovéhle:

Private Sub ZmenaVyberu(ByVal sender As Object, ByVal e As EventArgs) Handles DataGridView1.SelectionChanged

        ' Update the labels to reflect changes to the selection.
        LabelUpdate()
    End Sub
    Private Sub LabelUpdate()
        Dim IDZakaznika As String
        Dim Jmeno As String
        'Dim DataZTabulky As DataGridView
        Dim CounterRows As Integer
        Dim Counter As Integer
        Dim selectedCellCount As Integer = DataGridView1.GetCellCount(DataGridViewElementStates.Selected)

        If selectedCellCount > 0 Then

            If DataGridView1.AreAllCellsSelected(True) Then

                MessageBox.Show("All cells are selected", "Selected Cells")

            Else

                Dim sb As New System.Text.StringBuilder()
                Dim CisloRadku As Integer
                Dim i As Integer
                For i = 0 To selectedCellCount - 1
                    sb.Append(DataGridView1.SelectedCells(i).RowIndex.ToString())
                    CisloRadku = sb.ToString()
                    IDZakaznika = Integer.Parse(DataGridView1.Rows(CisloRadku).Cells("CustomerIdDataGridViewTextBoxColumn").Value.ToString())
                    Label1.Text = IDZakaznika
                Next i
                
            End If

        End If






    End Sub

jen mi to ještě hlásí chybu pokud vyberu celý řádek, ale to už se ošetří... (snad)

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

Na formuláři DataGridView1, Label1 a Label2,

DataTable simuluje vaše DataSource a labely

se aktualizují při změně řádku:

Public Class Form1
    Dim dt As DataTable
    Public Sub New()

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        dt = New DataTable
        With dt
            .Columns.Add("Číslo", Type.GetType("System.Int32"))
            .Columns.Add("Jméno", Type.GetType("System.String"))

            .Rows.Add(1, "Tomáš")
            .Rows.Add(2, "Ondřej")
            .Rows.Add(3, "Martin")
            .Rows.Add(4, "Pavel")
            .Rows.Add(5, "Jarda")
            .Rows.Add(6, "Jana")
            .Rows.Add(7, "Lucka")
            .Rows.Add(8, "Gábina")

        End With

        Me.DataGridView1.DataSource = dt
        Me.Label1.DataBindings.Add("Text", Me.DataGridView1.DataSource, "Číslo")
        Me.Label2.DataBindings.Add("Text", Me.DataGridView1.DataSource, "Jméno")
    End Sub
End Class
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