Caricamento datagridview

sabato 23 febbraio 2008 - 20.20

Dracy Profilo | Newbie

Salve, è la prima volta che scrivo, ma diciamo che spesso faccio un salto in queso forum a dare un'occhiata..
volevo esporvi il mio problema:
ho una datagridview..ma mi serviva caricarci i dati da un db (in modalità connessa) solamente che mi dà un errore alquanto strano..dice che non è possibile aggiungere delle righe perchè non ci sono le colonne il problema è che le colonne ci sono..e la cosa ancora più bizzarra è che se al posto del valore del db ne metto uno qualsiasi (es. dg.Item("dgc1", k).Value = k) in un ciclo for..funziona! mi carica tutti gli elementi..se (con lo stesso codice) metto invece dg.Item("dgc1", k).Value = (mDataReader("ID")) mi dà quell'errore.
Ho pensato quindi che fosse un problema di db..macchè funziona anche quello
Ora..dopo 1 anno e mezzo di vb sò che sono sempre gli errori più banali a farà perdere più tempo..ma questo me lo porto da quasi 2 settimane qualcuno ha qualche idea?
grazie

SSUPERPIPPO Profilo | Guru

potresti postare il codice che usi x popolare il dgv?

ciao

Ale

http://blogs.dotnethell.it/alebadalin

Dracy Profilo | Newbie

ciao, si certamente..
questo è il codice che nel load del form mi funziona:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
dg.Rows.Add(10) 'Aggiunge n righe vuote pronte per essere riempite
For k = 0 To 10
dg.Item("dgc1", k).Value = k 'Aggiunge in base alla colonna specificata il valore specificato
dg.Item("dgc2", k).Value = k + 1
Next
End Sub
Questo è quello che non è nel load ma in una procedura che viene richiamata in fase di caricamento
'ometto la parte di connessione al db..che comunque ho provato con una listview e funziona
dg.Rows.Add(10) '10 è un numero provvisorio, i dati nel db non superano i 10
Dim k As Integer
Do While mDataReader.Read
dg.Item("cl1", k).Value = (mDataReader("ID")) 'Aggiunge in base alla colonna specificata il valore specificato
dg.Item("cl2", k).Value = (mDataReader("Nome"))
k+=1
Loop

se metto dg.Rows.Add(10) proprio nel load funziona..ma si impianta nel ciclo
se metto dg.Rows.Add(10) li dove è adesso si impianta all'aggiunta delle righe

non sò più dove sbatter la testa..
grazie comunque per l'interesse

Ferux Profilo | Newbie

Ciao,
prova cosi:

1- Elimina la funzione che ti crea le 10 righer
2- Nella funzione nella quale cicli il DataReader, costruisciti un dataset dinamico e poi lo bindi al datagridview.

DataSet ds = new DataSet();
ds.Table.Add("tabella1");
ds.Table("Tabella1").Columns.Add("col1");
ds.Table("Tabella1").Columns.Add("col2");

ciclo datareader

Datarow dr = ds.table("tabella1").NewRow();
dr("col1") = datareader("");
.......
ds.table("").rows.Add(dr);

//fine ciclo

return ds;

Spero di averti fatt ocapire la filosofia del ragionamento
Saluti




Ing Ferux
[MCP MCAD]

Dracy Profilo | Newbie

Ciao,
grazie per la risposta ma credo che il codice che mi hai scritto non sia 2005..in generale comunque l'ho adattato, ma non riesco ad inizializzare DataSet ds = new DataSet(), mi dà errore sul ds.
Mentre aspettavo una risposta comunque, sono riuscito a far partire il codice, in pratica ho scoperto che se 2 o più procedure interagiscono quasi in contemporaneo con il dg si blocca..cosa che non mi è mai accaduta con listview e altri oggetti.
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5