|
|
Riga 1: |
Riga 1: |
− | Avendo una griglia con diverse righe e diverse colonne, può sorgere la necessità di ordinare i valori di dette righe in base alla colonna sulla quale si clicchi.
| + | #REDIRECT [[Ordinare_in_una_GridView_i_valori_di_più_righe_in_base_ad_una_colonna]] |
− | | |
− | Facciamo l'esempio di una griglia, costituita da tre righe e tre colonne; ciascuna colonna contiene dei valori nelle proprie celle. L'intento è quello di ordinare i valori di una colonna, cliccando nella cella della colonna medesima nell'<I>header</i>, e conseguentemente anche i valori delle altre colonne secondo lo spostamento dei valori della colonna cliccata. Avremo quindi lo spostamento delle righe della griglia in base al riordino dei valori presenti nella colonna cliccata.
| |
− | | |
− | '''Public''' Sub Form_Open()
| |
− |
| |
− | Dim j As Byte
| |
− |
| |
− | With GridView1
| |
− | .Columns.Count = 3
| |
− | .Rows.Count = 3
| |
− | End With
| |
− |
| |
− | With GridView1
| |
− | .Header = 1
| |
− | .Columns[0].Alignment = Align.Center
| |
− | .Columns[0].Title = "Id"
| |
− | .Columns[1].Alignment = Align.Center
| |
− | .Columns[1].Title = "Nome"
| |
− | .Columns[2].Alignment = Align.Center
| |
− | .Columns[2].Title = "Altro"
| |
− | End With
| |
− |
| |
− |
| |
− | For j = 0 To 2
| |
− | With GridView1[j, 0]
| |
− | .Text = CStr(j)
| |
− | End With
| |
− | With GridView1[j, 1]
| |
− | .Text = Chr(80 - j)
| |
− | End With
| |
− | With GridView1[j, 2]
| |
− | .Text = CStr(Fix(Rnd(10, 50)))
| |
− | End With
| |
− | Next
| |
− |
| |
− | <FONT color=#006400>' ''Questo consente di sollevare l'evento _Sort.''
| |
− | ' ''Infatti se si omette, non funziona più.''
| |
− | ' ''(E' possibile omettere " .Columns.Sort = 0 ": di default è la colonna num. 0):''</font>
| |
− | With GridView1
| |
− | .Sorted = True
| |
− | .Columns.Sort = 0
| |
− | End With
| |
− |
| |
− | '''End'''
| |
− |
| |
− |
| |
− | '''Public''' Sub GridView1_Sort() [<SUP>[[#Note|nota 1]]</sup>]
| |
− | Dim Values, ValueSorted As New String[]
| |
− | Dim Nx, iNx As Integer
| |
− | Dim tmp As String
| |
− |
| |
− | For Nx = 0 To GridView1.Rows.Max
| |
− | Values.Add(GridView1[Nx, GridView1.Columns.Sort].Text)
| |
− | Next
| |
− | ValueSorted = Values.Copy()
| |
− | If GridView1.Columns.Ascending Then
| |
− | ValueSorted.Sort(gb.Ascent)
| |
− | Else
| |
− | ValueSorted.Sort(gb.Descent)
| |
− | Endif
| |
− | For Nx = 0 To ValueSorted.Max
| |
− | For iNx = 0 To GridView1.Columns.Max
| |
− | Swap GridView1[Nx, iNx].Text, GridView1[Values.Find(ValueSorted[Nx], 0, Nx), iNx].Text
| |
− | Next
| |
− | Values.Clear()
| |
− | For iNx = 0 To GridView1.Rows.Max
| |
− | Values.Add(GridView1[iNx, GridView1.Columns.Sort].Text)
| |
− | Next
| |
− | Next
| |
− | GridView1.Refresh()
| |
− |
| |
− | '''End'''
| |
− | | |
− | | |
− | | |
− | ==Note==
| |
− | | |
− | [1] Questa parte di codice è stata elaborata dall'utente ''Milio'' del forum di Gambas-it.org .
| |