Newsgroup: it.comp.lang.visual-basic
Titolo: come trovare riga in datagridview collegata alla datarow?

Ciao, ho una datagridview in binding con una datatable.
se da una riga della datagriview voglio trovare la datarow relativa in 
binding uso .DataBoundItem
Ora come faccio l'inverso?
Avendo una datarow, come trovo la relativa riga della datagriview con cui è 
in binding?
Thanks
 

 in binding?
direi che l'unica soluzione è un bel ciclo su tutte le righe alla 
ricerca del DataBoundItem.
Ma... quale è lo scopo?
.m
-- 
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com
blog @ 
http://milestone.topics.it
whynot [ at ] topics [ dot ] it


Ho una datagridview che ha alcune colonne in binding con una datatable e una 
campo colonna di tipo image. Ho effettuato una pulizia sulla 
datatable(eliminazione righe secondo alcuni parametri etc) Ora vorrei 
settare un'icona per ogni riga in base ad un flag. Visto che il campo 
dell'icona non è in binding con la datatable, scorrendo tutte le righe della 
datatable, potrei settare la colonna immagine facilmente se riuscissi ad 
accedere direttamente alla riga della datagridview partendo dalla datarow.
Qualche idea?
Altrimenti avevo pensato di lavorare con il bindingssource:
for i=0 to Me.Table1BindingSource.Count
    Me.Table1BindingSource.Position = i
    dim k as datarowview=me.table1Binidnigsource.current
    if k["flag"]=1 then 
Me.Table1DataGridView.SelectedRows(0).Cells("image").Value =icon1
next
Potrebbe andare?
Ps: se ho una datagridview in binding con una datatable e non permetto 
all'utente di riordinare le righe, posso dire che che l'ordine di 
visualizzazione delle righe nella datagridview, corrisponderà all'ordine di 
inserimento delle righe all'interno della datatable?
Grazie
 

 Qualche idea?
Non ho capito, tu vuoi che una colonna di tipo immagine carichi un'immagine
dipendente da una datatable che è associata alla griglia?
Non puoi bindare anche la colonna che ti serve per la condizione?
Una cosa del genere (qui cambio il colore del testo delle righe che hanno
una colonna nascosta "data cancellazione" impostata)
    Private Sub grdRighe_RowPrePaint(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewRowPrePaintEventArgs) Handles
grdRighe.RowPrePaint
        Dim row As DataGridViewRow = grdRighe.Rows(e.RowIndex)
        If Not IsDBNull(row.Cells("DATACANC").Value) AndAlso Not
row.IsNewRow Then
            e.PaintParts = DataGridViewPaintParts.All
            row.DefaultCellStyle.ForeColor = Color.LightGray
        End If
    End Sub

 Non puoi bindare anche la colonna che ti serve per la condizione?
In effetti potrei fare anche come suggerisci tu: aggiungere il campo 
immagine alla datatable cosi ho tutta la datagridview bindata....mi sembra 
la soluzione migliore.
 Comunque ero anche curioso se si riusciva a risalire alla riga 
corrispondente ad una data datarow :D
Grazie ;)
 

 la soluzione migliore.
Io dicevo comunque di aggiungere alla griglia la colonna che ti serve per
decidere l'immagine, ma non avevo ben capito la situazione iniziale.

 inserimento delle righe all'interno della datatable?
A naso direi di si.


 A naso direi di si.
NI!
Dipende dalla primary key del db....se per pazzia l'hai impostata sul
cognome o(meno "pazzamente") sul C.F. li vedi in ordine di cognome o
di CF
Ovvio: se non riflette la situazione di un DB reale  ...allora avete
ragione!

 inserimento delle righe all'interno della datatable?
Si, rigorosamente.
E' appunto in fase di caricamento della databale che occorre 
specificare l'ordine delle righe, tipicamente con una clausola Order By 
nella select.
Alberto

 Ovvio: se non riflette la situazione di un DB reale  ...allora avete
su questo siamo d'accordo ma se non ho capito male la dmanda verteva 
sulla datatable, come arrivno i dati nella datatable questo è un altro 
paio di maniche.


 paio di maniche.
...lo sai che non ho mai approfondito?
A rigor di logica io penso che se il dataset è agganciato ad un
db...anche la datatable dovrebbe riflettere i vincoli del db.
In locale nel client però non sò che succede...forse raccoglie in
ordine di inserimento i dati...ma quando scateni l'update remoto lo fà
in base alla PK???Farlo in ordine di inserimento...mah mi parrebbe una
violazione dei vincoli !!!(se lo voglio in ordine di CF perchè mi
aggiorni come ti pare a te???...hai un campo dummy in base al
timestamp?)
Però il niubbo sono io!...mi sbaglierò!

 in base alla PK???Farlo in ordine di inserimento...mah mi parrebbe una
Dell'update mi interessa non molto:
Siccome il "problema" principale è quello di scorrere le datarow e in base a 
queste settare l'immagine nella datagrid alla riga corrispondente, visto che 
non esiste un metodo che mi permette di risalire direttamente alla riga 
della datagridview partendo da una datarow, ho pensato che l'ordine di 
default in datagridview  corrisponde all'ordine in cui le datarow sono state 
aggiunte alla datatable(ovviamente disabilitando tutti gli ordinamenti 
possibili)....
 

 e basta.
Ok, in datatable potrei aggiungere un campo da mettere in binding con la 
datagriviewcolumn....di che tipo?
La domanda completa è: avendo 3 immagini come faccio tramite binding a far 
visualizzare l'immagine che voglio?
Sto guardando esempi su internet e finora per questo scopo hanno sempre 
usato la tecnica di settare l'immagine all'interno della cellformatting 
()che sinceramente non mi piace)senza usare il binding....
 

 visualizzare l'immagine che voglio?
usa gli eventi Format e Parse del motore di databinding per manipolare 
la faccenda :-)



So che chiedo troppo, ma un esempietto si trova?
in questo articolo che ho trovato 
(
http://www.informit.com/articles/article.aspx?p=446453&seqNum=14)usa
 due 
classi personalizzate... 

 classi personalizzate...
.m
