+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Dati in una Grid semplice

  1. #1
    Chico non è in linea Scolaretto
    Luogo
    Padova
    Post
    126

    Dati in una Grid semplice

    Ciao a tutti.
    Io dovrei semplicemente rappresentare una tabelle a 2 colonne, con 12 righe, uno per mese, in una grid.
    L'utente dovrebbe avere la possibilità di modificare i valori della seconda colonna e nient'altro (nessuna aggiunta di record, di colonne ecc.)
    Tra i controlli disponibili ho trovato solamente il DataGRidView, che fa un sacco di cose ed è un po' complicato.

    Domanda 1. Esiste un modo più semplice ?
    Domanda 2. Se proprio devo usarlo mi date qualche dritta a partire dal tentativo di codice che riporto sotto e che non funziona nemmeno. (Errore: DataRow non è disponibile in quanto Protected Firend).


    codice:
    	Private Sub IrrigationForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    		Dim table As DataTable = New DataTable("IrrigationTable")
    		table.Columns.Add("Month")
    		table.Columns.Add("Demand")
    
    		Dim view As New DataView(table)
    
    		Dim r As New DataRow
    		r.Item(1) = "Jan"
    		r.Item(2) = 100
    		table.Rows.Add(r)
    
    		DataGridViewIrrigation.DataSource = view
    	End Sub

  2. #2
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    389
    Forse viene più agevole impostare 12 Label e 12 TextBox...

    In ogni caso sei sicuro dell'errore? DataRow è una classe Public, non una variabile e Protect Friend è la visibilità di una variabile che poco c'entra con il tipo... Su quale riga hai l'errore?

    In ogni caso la nuova riga andrebbe creata con
    codice:
    Dim r as DataRow = table.NewRow

  3. #3
    patel45 non è in linea Scolaretto Ultimo blog: recupero dati da pagina html
    Post
    441
    Blogs
    1
    In rete trovi moltissimi esempi, cerca "vb.net populate datatable"

  4. #4
    Chico non è in linea Scolaretto
    Luogo
    Padova
    Post
    126
    Grazie cari.
    Ho provato la correzione di Sgrubak e adesso il codice non dà errori ma... sembra non vi sia corrispondenza tra le modifiche ai dati che faccio nel codice e la DataGridView che ho inserito nel form.
    Dimenticavo.. ho inserito la DataGridViewIrrigation nel Form e ho definito le stesse colonne (Month e Demand). Adesso posso scriverci dentro tutti i record che voglio ma non trovo la corrispondenza con la table.


    codice:
    	Private Sub IrrigationForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    		Dim table As DataTable = New DataTable("IrrigationTable")
    		table.Columns.Add("Month")
    		table.Columns.Add("Demand")
    
    		Dim r As DataRow = table.NewRow
    		r.Item(1) = "Jan"
    		r.Item(2) = 100
    		table.Rows.Add(r)
    
    		Dim view As New DataView(table)
    		DataGridViewIrrigation.DataSource = view
    	End Sub

  5. #5
    patel45 non è in linea Scolaretto Ultimo blog: recupero dati da pagina html
    Post
    441
    Blogs
    1
    Non si capisce cosa vuoi fare, se non prendi dati da db la table non ti serve, quando hai scritto i dati nella griglia cosa ci vuoi fare ?
    inoltre a cosa ti serve la dataview ?
    Ultima modifica di patel45; 29-06-2020 20:36 

  6. #6
    Chico non è in linea Scolaretto
    Luogo
    Padova
    Post
    126
    Quote Originariamente inviato da patel45 Visualizza il messaggio
    Non si capisce cosa vuoi fare, se non prendi dati da db la table non ti serve, quando hai scritto i dati nella griglia cosa ci vuoi fare ?
    inoltre a cosa ti serve la dataview ?
    Il punto è proprio questo.
    Io devo a mettere a disposizione all'utente un modo per modificare i 12 valori di Demand per i mesi dell'anno. L'utente li inserisce e l'applicazione li usa per alcune valutazioni. Il db a me non serve.
    Potrei fare come dice Sgrubak, con 12 label e forse alla fine farò così. Ma possibile non ci sia un controllo che mette a disposizione una semplice tabella senza dover avere per forza un database ?! Ai tempi del VB6 c'era un controllo di questo tipo.

    Certo che se devo per forza di cose costruire un db allora userò le 12 etichette.

  7. #7
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    2,984
    No, nessun obbligo di DB.
    Semplicemete puoi creare colonne e righe per una griglia unbound. Se lo fai da codice, è più chiaro che con il wizard.
    codice:
            DataGridView1.ColumnCount = 2
            DataGridView1.Columns(0).Name = "Month"
            DataGridView1.Columns(1).Name = "Demand"
    
            Dim row As String() = New String() {"Jan", "100"}
            DataGridView1.Rows.Add(row)
            row = New String() {"Feb", "120"}
            ....
    Sia per le righe che per le colonne puoi diversificare molte proprietà.
    Il regolamento del forum: la prima cosa da leggere.

  8. #8
    Chico non è in linea Scolaretto
    Luogo
    Padova
    Post
    126
    Grazie Brotolo. Così è perfetto.
    Questa è la tabella.

    codice:
     Dim rows(11)() As String
    
    	Private Sub IrrigationForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            rows(0) = New String() {"Jan", "0"}
            rows(1) = New String() {"Feb", "0"}
            rows(2) = New String() {"Mar", "0"}
            rows(3) = New String() {"Apr", "60"}
            rows(4) = New String() {"Mag", "80"}
            rows(5) = New String() {"Jun", "100"}
            rows(6) = New String() {"Jul", "100"}
            rows(7) = New String() {"Ago", "100"}
            rows(8) = New String() {"Sep", "40"}
            rows(9) = New String() {"Oct", "0"}
            rows(10) = New String() {"Nov", "0"}
            rows(11) = New String() {"Dec", "0"}
    
            DataGridViewIrrigation.ColumnCount = 2
            DataGridViewIrrigation.Columns(0).Name = "Month"
            DataGridViewIrrigation.Columns(1).Name = "Demand"
            For Each r In rows
                DataGridViewIrrigation.Rows.Add(r)
            Next r
    	End Sub

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi