Slezionare una riga in un datagrid

mercoledì 28 giugno 2006 - 14.34

andreapavia Profilo | Senior Member

al click su un qualsiasi ca,po del datagrid vorrei che la riga mi diventasse blu come quando clicco sulla cella di intestazione...

questo il mio codice:


Dim ts As New DataGridTableStyle
ts.MappingName = dset.Tables(0).TableName()

DataGrid1.TableStyles.Add(ts)
DataGrid1.DataSource = dset.Tables(0)


For iii = 0 To DataGrid1.DataSource.Columns().Count - 1

If DataGrid1.DataSource.Columns(iii).ColumnName() = "ANNO" Or DataGrid1.DataSource.Columns(iii).ColumnName() = "SERIE" _
Or DataGrid1.DataSource.Columns(iii).ColumnName() = "DATA" Or DataGrid1.DataSource.Columns(iii).ColumnName() = "VALORE" _
Or DataGrid1.DataSource.Columns(iii).ColumnName() = "DESCRIZIONE" Then




Dim dgtbc As DataGridTextBoxColumn
dgtbc = DataGrid1.TableStyles(0).GridColumnStyles(iii)

If DataGrid1.DataSource.Columns(iii).ColumnName() = "ANNO" Then

dgtbc.HeaderText = "ANNO"


dgtbc.Width = calcolaLarcghezzaPerc(10, (DataGrid1.Width - DataGrid1.RowHeaderWidth))

End If

If DataGrid1.DataSource.Columns(iii).ColumnName() = "SERIE" Then

dgtbc.HeaderText = "SERIE"
dgtbc.Width = calcolaLarcghezzaPerc(10, (DataGrid1.Width - DataGrid1.RowHeaderWidth))

End If

If DataGrid1.DataSource.Columns(iii).ColumnName() = "DATA" Then

dgtbc.HeaderText = "DATA"
dgtbc.Width = calcolaLarcghezzaPerc(10, (DataGrid1.Width - DataGrid1.RowHeaderWidth))

End If

If DataGrid1.DataSource.Columns(iii).ColumnName() = "VALORE" Then


dgtbc.HeaderText = "VALORE"
dgtbc.Width = calcolaLarcghezzaPerc(10, (DataGrid1.Width - DataGrid1.RowHeaderWidth))

End If

If DataGrid1.DataSource.Columns(iii).ColumnName() = "DESCRIZIONE" Then

dgtbc.HeaderText = "DESCRIZIONE"
dgtbc.Width = calcolaLarcghezzaPerc(60, (DataGrid1.Width - DataGrid1.RowHeaderWidth))

End If


dgtbc.ReadOnly = True

Else
Dim dgtbc As DataGridTextBoxColumn
dgtbc = DataGrid1.TableStyles(0).GridColumnStyles(iii)
dgtbc.Width = 0

End If

Next



IN QUESTA SEZIONE IL CODICE MI MOSTRA LE COLONNE CON STILE ASSEGNATO


ora vorrei quando clicco su un campo qualsiasi EVIDENZIARE L'ITNERA RIGA


QUESTA E' LA SUB DEL CLICK

Private Sub DataGrid1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseDown
Dim pt = New Point(e.X, e.Y)
Dim hit As DataGrid.HitTestInfo = DataGrid1.HitTest(pt)

If hit.Type = Windows.Forms.DataGrid.HitTestType.Cell Then
DataGrid1.CurrentCell = New DataGridCell(hit.Row, hit.Column)
DataGrid1.Select(hit.Row)
End If


End Sub


PERCHE' NON MI EVEDENZIA LA RIGA MA SOLO IL CAMPO....

qualcuno sa aiutarmi????

grazie 1000



blood Profilo | Senior Member

ne abbiamo già parlato in questo forum...comunque sia basta che ti crei una colonna nascosta (con width=0) nel DataGridStyles, e all'evento CurrentCellChanged del DataGrid ci sposti il cursore lì in modo che non si veda, ed è come se selezionasse il rettangolino della riga colorandotela con il colore che hai scelto nello stile del tuo Datagrid
---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

andreapavia Profilo | Senior Member

ho risolto in altro modo...
o meglio.... il mouse downdown di default probabilmente deseziona cio' che è selezionato e sul muose uo seleziona la riga desiderata.... ho spostato l'evento sul datagrid.mouseup e sul click del tasto desto e funziona correttamente


Private Sub DataGrid1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseUp

Dim tastoMouse As String

tastoMouse = e.Button.ToString


Dim pt = New Point(e.X, e.Y)
Dim hit As DataGrid.HitTestInfo = DataGrid1.HitTest(pt)


If hit.Row > -1 And tastoMouse = "Left" Then
DataGrid1.CurrentCell = New DataGridCell(hit.Row, hit.Column)
DataGrid1.Select(hit.Row)
selectedRow = hit.Row

End If


End Sub

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