Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Aiuto : datagrid selezione con piu colori
lunedì 09 ottobre 2006 - 10.17
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
basicdany
Profilo
| Expert
590
messaggi | Data Invio:
lun 9 ott 2006 - 10:17
Ciao, a tutti, in vb.net devo selezionare dei record di un datagrid di diverso colore in base al valore di un campo di una tabella, e possibile far questo ho il datagrid permette di selezionare un solo colore?
grazie a tutti
giulyxiano
Profilo
| Junior Member
163
messaggi | Data Invio:
lun 9 ott 2006 - 12:14
Come prima cosa scusa se te lo dico ma nel tuo messaggio "Ho" non è verbo è una disgiunzione quindi devi scrivere "o" ti ripeto scusa se ti faccio notare questa sottigliezza.
Per quanto riguarda il datagrid io ho risolto la cosa facendo così: se la riga non è ok allora selezionala e colorala con un colore altrimenti se è ok colorala du in altro colore. Questo è il problema logico, devi però andare a scrivere del codice.
Greco Giuliano
basicdany
Profilo
| Expert
590
messaggi | Data Invio:
lun 9 ott 2006 - 12:32
Ok e chiaro come concetto, grazie per l'interesse, ora però a livello di codice come si fa questo, avresti quache piccolo esempio da passarmi, grazie tanto.
ciao
giulyxiano
Profilo
| Junior Member
163
messaggi | Data Invio:
lun 9 ott 2006 - 19:25
scrivo codice e pseudo codice che integrerai con le tue cose specifiche..
scrivi due Private Sub SelezionaRigaRossa(riga) e SelezionaRogaVerde(riga)
Private Sub selezionaRigaRossa(Byval riga as Integer)
DataGrid.Select(riga)
DatagRid.TableStyle(0).SelectionBackColor = Color.Red
End Sub
Private Sub selezionaRigaVerde(Byval riga as Integer)
DataGrid.Select(riga)
DatagRid.TableStyle(0).SelectionBackColor = Color.Green
End Sub
....nel tuo codice farai sicuramente dei controlli sul valore della cella veo?
Allora:
If il valore della cella...<.>.= Then
selezionaRigaRossa(indicedella riga da selezionare)
end If
If il valore della cella...<.>.= Then
selezionaRigaVerde(indicedella riga da selezionare)
end If
spero che va bene ma devi scriverlo per il tuo codice...
Greco Giuliano
basicdany
Profilo
| Expert
590
messaggi | Data Invio:
mar 10 ott 2006 - 12:23
ciao, grazie tanto, provo il tutto e ti faccio sapere.
basicdany
Profilo
| Expert
590
messaggi | Data Invio:
gio 12 ott 2006 - 08:45
Ciao, no sono riuscito a realizzareniente con il codice che mi hai postato,
ti invio codice che utilizzo per impostare datagrid, ti ripeto il mio problema e quello
di colorare deri record nella grigla di diverso colore in base al nome contenuto nel record,
quindi:
se nel campo c'e pippo =colore riga rosso,
se c'è anna=colore riga giallo.
se c'è rossi=colore riga verde
Dim gridStyle As New DataGridTableStyle
gridStyle.MappingName = tabella
Sql = "SELECT * FROM Clienti"
Dim cn As New OleDbConnection(Connessione)
Dim da As New OleDbDataAdapter(Sql, cn)
Dim ds As New DataSet
cn.Open()
da.Fill(ds, TABPrimaNotaRighe)
DataGrid1.DataSource = ds.Tables(TABPrimaNotaRighe)
'Nome
Dim codiceStyle As New DataGridTextBoxColumn
codiceStyle.MappingName = "Nome"
codiceStyle.HeaderText = "Nome"
codiceStyle.Width = 0
codiceStyle.NullText = ""
codiceStyle.Alignment = HorizontalAlignment.Center
codiceStyle.TextBox.BackColor = Color.White
gridStyle.GridColumnStyles.Add(codiceStyle)
'indirizzo
Dim DataStyle As New DataGridTextBoxColumn
DataStyle.MappingName = "Indirizzo"
DataStyle.HeaderText = "Indirizzo"
DataStyle.Width = 100
DataStyle.NullText = ""
DataStyle.Alignment = HorizontalAlignment.Left
DataStyle.TextBox.BackColor = Color.Red
gridStyle.GridColumnStyles.Add(DataStyle)
DataGrid1.TableStyles.Clear()
DataGrid1.TableStyles.Add(gridStyle)
Aspetto tua risposta, grazie tento
giulyxiano
Profilo
| Junior Member
163
messaggi | Data Invio:
gio 12 ott 2006 - 09:17
Dim i as integer
Dim test as String
For i=0 To Tuodataset.Tables(0).Rows.Count-1
Test=Tuodataset.Tables(0).Rows(i).Item("Nome")
If Test="Anna" Then
ColoraRosso(i)
Elseif Test="Giorgio" Then
ColoraGiallo(i)
.....
End if
Next
'dove ColoraRosso(i) sono le procedure che ti avevo scritto
'che seleziona la riga che gli passi e la colora.
'Io ho presupposto che la tua tabella nel tuo dataset sia la tabella (0) zero
'prova e a presto.
Greco Giuliano
basicdany
Profilo
| Expert
590
messaggi | Data Invio:
gio 12 ott 2006 - 10:58
ok, grazie
basicdany
Profilo
| Expert
590
messaggi | Data Invio:
ven 13 ott 2006 - 08:21
Scusami se ti disturbo
Ecco la procedura che ho fatto:
Dim Sql As String
Dim Connessione As String = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\prova.mdb" & ";"
Sql = "SELECT * FROM Prova"
Dim cn As New OleDbConnection(Connessione)
Dim da As New OleDbDataAdapter(Sql, cn)
Dim ds As New DataSet
cn.Open()
da.Fill(ds, "Prova")
DataGrid1.DataSource = ds.Tables("Prova")
Dim i As Integer
Dim test As String
For i = 0 To ds.Tables(0).Rows.Count - 1
test = ds.Tables(0).Rows(i).Item("Nome")
If test = "Pippo" Then
DataGrid1.Select(i)
DataGrid1.SelectionBackColor = Color.Green
End If
If test = "Rossi" Then
DataGrid1.Select(i)
DataGrid1.SelectionBackColor = Color.Red
End If
If test = "Lucia" Then
DataGrid1.Select(i)
DataGrid1.SelectionBackColor = Color.Black
End If
Next
Ci sono due gorssi problemi:
1)Carica tutte le righe che soddisfano la condizione con l'ultimo colore che trova, quindi per
capirci "pippi" "rossi" "lucia" vengono colorate tutte di rosso, perchè rossi e l'ultimo record.
2)Appena click su una riga perde tutti i colori
Comunque la cosa che voglio ottenere forse non e chiara:
voglio ottenere delle righe di diverso colore in base al contenuto dei record.
Aspetto tuo aiuto, grazie tanto.
giulyxiano
Profilo
| Junior Member
163
messaggi | Data Invio:
ven 13 ott 2006 - 09:43
La cosa si può migliorare ,ma a quanto ho capito tu vuoi un'altra cosa colorare il testo e mi sa che così non te ne esci perchè dovresti farti una classe ad hoc che sia un datagridtablestyle e cambiarlo ogni volta e adesso non posso aiutarti perchè sono impegnatissimo in un progetto. Comunque è ovvio che selezionandole le righe poi il colore se ne andava. Hai provato invece di cambiare il colore di fondo della riga a cambiare il testo cerca non usare BackColor ma se non ricordo mal ForeColor. Ciao
Greco Giuliano
basicdany
Profilo
| Expert
590
messaggi | Data Invio:
ven 13 ott 2006 - 12:51
Ciao, pero almeno il fatto che prende solo l'ultimo colore, lo posso risolvere.
Almeno questa cosa perfevore.
Torna su
Stanze Forum
Elenco Threads
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 !