VB.NET 2010 DataGridView editabile

giovedì 24 aprile 2014 - 10.49
Tag Elenco Tags  VB.NET

autosblindo Profilo | Newbie

Buongiorno a tutti.

Premetto che uso la versione express di Visual Studio 2010 e utilizzo database MySql.
Ho bisogno di popolare una DataGridView e fare in modo che l'utente possa modificare i dati. Quando l'utente ha finito preme un pulsante e i dati presenti nella DataGridView devono finire in una tabella (come inserimento record).
Descrivo meglio lo scenario, la situazione in cui sono arrivato, e i problemi che ho.
Ho due tabelle:
--ARTICOLI--
CodArticolo
Descrizione
CodGruppo
CodCategoria

--TABGRUPPI--
CodGruppo
Descrizione

C'è una form dove l'utente può inserire le categorie di cui è interessato. In base a questa selezione formo una prima query che tira fuori tutti gli articoli che hanno quelle categorie.
Quindi costruisco la query e popolo un datatable:
Dim SQL As New System.Text.StringBuilder Dim MyDataTableArticoli As New DataTable SQL.AppendLine("SELECT CodArticolo, Descrizione, CodGruppo, CodCategoria") SQL.AppendLine("FROM ARTICOLI") SQL.AppendLine("WHERE CodCateogira IN (1,2,3,4,5)") Using MyDataAdapter As New MySqlDataAdapter(SQL.ToString, Conn) MyDataAdapter.Fill(MyDataTableArticoli) End Using

Questa datatable contiene tutti i codici gruppi validi per la selezione fatta dall'utente.
Ho bisogno di presentare all'utente una DataGridView con codice e descrizione dei soli gruppi validi.
Pensando a quale approccio adottare ho fatto qualche ricerca ed ho trovato una soluzione che mi sembrava carina.

Quello che faccio successivamente è creare un dataset composto da due datatable. La prima [MyDataTableGruppi] è formata da codice gruppo e descrizione dati dalla tabella TABGRUPPI, la seconda [MyDataTableGruppiOK] prende dalla datatable precedente [MyDataTableArticoli] i soli codici gruppo validi. Creo una relazione tra le due tabelle e aggiungo a MyDataTableGruppiOK il campo descrizione in modo che questa datatable abbia codice e descrizione dei soli gruppi validi.
Di seguito il codice utilizzato:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

La griglia viene popolata e sono effettivamente presenti codice e descrizione dei gruppi validi.
Il problema è che non riesco a modificare i dati presenti nella DataGridView. La colonna DESCRIZIONE è completamente bloccata, mentre se modifico un dato nella colonna CODICE ed inserisco un codice valido viene aggiornata la colonna descrizione, se inserisco un codice non valido ottengo un errore. Avrei bisogno di far modificare all'utente le descrizioni dei gruppi, ma sono modifiche che devono interessare solo la griglia, non la tabella sul db.
Quando popolo una DataGridView passando come datasource una datatable (senza passare dal discorso dataset, relazione, etc) non ho questo problema.

Come altra soluzione ho pensato di scorrere le righe di MyDataTableGruppiOK e creare la query che mi tira fuori codice e descrizione dei gruppi validi. Così creo la datatable e la passo alla DataGridView. Così sono sicuro che funziona.
Ma sono curioso di sapere se esiste un approccio più elegante per risolvere il problema, considerando la premessa che ho fatto all'inizio: utilizzo vs 2010 express e MySql.

Grazie, ciao.

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5