[Gambas-user] How to sort a TableView?
Frank
fgores at ...174...
Thu Mar 31 08:55:33 CEST 2016
Hi TLD, I found something that might help:
I have put the whole code here but the bit you talk about start at line 76.
found it here:http://gambas-buch.de/dw/doku.php?id=k17:k17.7:k17.7.4:start
[1] ' Gambas class file
[2]
[3] Private <http://gambasdoc.org/help/lang/private> hSortAs <http://gambasdoc.org/help/lang/as> New <http://gambasdoc.org/help/lang/new> CSort
[4] Private <http://gambasdoc.org/help/lang/private> iLastAs <http://gambasdoc.org/help/lang/as> Integer <http://gambasdoc.org/help/lang/type/integer> = -1
[5] Private <http://gambasdoc.org/help/lang/private> iCountAs <http://gambasdoc.org/help/lang/as> Integer <http://gambasdoc.org/help/lang/type/integer>
[6]
[7] Public <http://gambasdoc.org/help/lang/public> Sub <http://gambasdoc.org/help/lang/sub> Form_Open()
[8]
[9] GridView1.Header = GridView1.Horizontal
[10] GridView1.Sorted = True <http://gambasdoc.org/help/lang/true>
[11]
[12] GridView1.Columns.Count = 6
[13]
[14] GridView1.Columns[0].Width = 90
[15] GridView1.Columns[0].Title = "Number"
[16] GridView1.Columns[1].Width = 90
[17] GridView1.Columns[1].Title = "Boolean"
[18] GridView1.Columns[2].Width = 80
[19] GridView1.Columns[2].Title = "String"
[20] GridView1.Columns[3].Width = 160
[21] GridView1.Columns[3].Title = "Date1"
[22] GridView1.Columns[4].Width = 90
[23] GridView1.Columns[4].Alignment = Align.Center
[24] GridView1.Columns[4].Title = "Number2"
[25] GridView1.Columns[5].Title = "Date2"
[26]
[27] FMain.Center
[28] FMain.Resizable = False <http://gambasdoc.org/help/lang/false>
[29] iCount= 999
[30] FMain.Text = "Ausgabe von " & Str <http://gambasdoc.org/help/lang/str>((iCount+ 1) * Str <http://gambasdoc.org/help/lang/str>(GridView1.Columns.Count)) & " Zufallsdaten, \\ die sortiert werden können!"
[31] End <http://gambasdoc.org/help/lang/end> ' Form_Open
[32]
[33] Public <http://gambasdoc.org/help/lang/public> Sub <http://gambasdoc.org/help/lang/sub> btnFillGrid_Click()
[34] Dim <http://gambasdoc.org/help/lang/dim> iAs <http://gambasdoc.org/help/lang/as> Integer <http://gambasdoc.org/help/lang/type/integer>
[35] Dim <http://gambasdoc.org/help/lang/dim> vMatrixAs <http://gambasdoc.org/help/lang/as> Variant <http://gambasdoc.org/help/lang/type/variant>[]
[36] Dim <http://gambasdoc.org/help/lang/dim> aStrsAs <http://gambasdoc.org/help/lang/as> String <http://gambasdoc.org/help/lang/type/string>[] = ["Merkur", ...,"Mars","Jupiter","Saturn","Uranus","Neptun","Pluto"]
[37]
[38] hSort.Clear() ' Spaltensortierung zurücksetzen
[39] iLast= -1
[40]
[41] GridView1.Clear
[42] Randomize <http://gambasdoc.org/help/lang/randomize>
[43]
[44] For <http://gambasdoc.org/help/lang/for> i= 0 To <http://gambasdoc.org/help/lang/to> iCountStep <http://gambasdoc.org/help/lang/step> 1
[45] vMatrix= New <http://gambasdoc.org/help/lang/new> Variant <http://gambasdoc.org/help/lang/type/variant>[]
[46] vMatrix.Add(Round <http://gambasdoc.org/help/lang/round>(Rnd
<http://gambasdoc.org/help/lang/rnd>(0,10),-2)) ' Reelle Zahl
[47] vMatrix.Add(CBool <http://gambasdoc.org/help/lang/cbool>(Round
<http://gambasdoc.org/help/lang/round>(Rnd
<http://gambasdoc.org/help/lang/rnd>(0,1)))) ' Wahrheitswert
[48] vMatrix.Add(aStrs[CInt <http://gambasdoc.org/help/lang/cint>(Rnd
<http://gambasdoc.org/help/lang/rnd>(0, aStrs.Count))]) ' Zeichenkette
[49] vMatrix.Add(CDate <http://gambasdoc.org/help/lang/cdate>(Rnd
<http://gambasdoc.org/help/lang/rnd>(CFloat
<http://gambasdoc.org/help/lang/cfloat>(Now
<http://gambasdoc.org/help/lang/now>()),CFloat <http://gambasdoc.org/help/lang/cfloat>(Now
<http://gambasdoc.org/help/lang/now>() + 1000)))) ' Datum 1
[50] vMatrix.Add(CInt <http://gambasdoc.org/help/lang/cint>(Rnd
<http://gambasdoc.org/help/lang/rnd>(-10,10))) ' Ganze Zahl
[51] vMatrix.Add(CDate <http://gambasdoc.org/help/lang/cdate>(Rnd
<http://gambasdoc.org/help/lang/rnd>(CFloat
<http://gambasdoc.org/help/lang/cfloat>(Now
<http://gambasdoc.org/help/lang/now>()),CFloat <http://gambasdoc.org/help/lang/cfloat>(Now
<http://gambasdoc.org/help/lang/now>() + 2000)))) ' Datum 2
[52] hSort.Add(vMatrix)
[53] Next <http://gambasdoc.org/help/lang/next> ' i
[54]
[55] ArrayToGrid()
[56]
[57] End <http://gambasdoc.org/help/lang/end> ' FillGrid
[58]
[59] Public <http://gambasdoc.org/help/lang/public> Sub <http://gambasdoc.org/help/lang/sub> ArrayToGrid()
[60] Dim <http://gambasdoc.org/help/lang/dim> iAs <http://gambasdoc.org/help/lang/as> Integer <http://gambasdoc.org/help/lang/type/integer>
[61] Dim <http://gambasdoc.org/help/lang/dim> vMatrixAs <http://gambasdoc.org/help/lang/as> Variant <http://gambasdoc.org/help/lang/type/variant>[]
[62]
[63] GridView1.Rows.Count = hSort.Count
[64] For <http://gambasdoc.org/help/lang/for> i= 0 To <http://gambasdoc.org/help/lang/to> hSort.Count - 1 Step <http://gambasdoc.org/help/lang/step> 1
[65] vMatrix= hSort[i]
[66] GridView1[i,0].Text = Str$
<http://www.google.com/search?hl=en&q=str%24+site:http://gambasdoc.org/help/lang/&btnI=I%27m%20Feeling%20Lucky>(vMatrix[0])
[67] GridView1[i,1].Text = Str$
<http://www.google.com/search?hl=en&q=str%24+site:http://gambasdoc.org/help/lang/&btnI=I%27m%20Feeling%20Lucky>(vMatrix[1])
[68] GridView1[i,2].Text = Str$
<http://www.google.com/search?hl=en&q=str%24+site:http://gambasdoc.org/help/lang/&btnI=I%27m%20Feeling%20Lucky>(vMatrix[2])
[69] GridView1[i,3].Text = Str$
<http://www.google.com/search?hl=en&q=str%24+site:http://gambasdoc.org/help/lang/&btnI=I%27m%20Feeling%20Lucky>(vMatrix[3])
[70] GridView1[i,4].Text = Str$
<http://www.google.com/search?hl=en&q=str%24+site:http://gambasdoc.org/help/lang/&btnI=I%27m%20Feeling%20Lucky>(vMatrix[4])
[71] GridView1[i,5].Text = Str$
<http://www.google.com/search?hl=en&q=str%24+site:http://gambasdoc.org/help/lang/&btnI=I%27m%20Feeling%20Lucky>(vMatrix[5])
[72] Next <http://gambasdoc.org/help/lang/next> ' i
[73]
[74] End <http://gambasdoc.org/help/lang/end> ' ArrayToGrid
[75]
[76] Public <http://gambasdoc.org/help/lang/public> Sub <http://gambasdoc.org/help/lang/sub> GridView1_ColumnClick(ColumnAs <http://gambasdoc.org/help/lang/as> Integer <http://gambasdoc.org/help/lang/type/integer>)
[77] ' Beim wiederholten Klick auf die gleiche Spalte wird die Sortierung
invertiert
[78] If <http://gambasdoc.org/help/lang/if> iLast= ColumnThen <http://gambasdoc.org/help/lang/then>
[79] hSort.Reverse() ' Optimierung, um nicht mit gb.Descent wiederholt zu sortieren
[80] Else <http://gambasdoc.org/help/lang/else>
[81] hSort.SortField(Column)
[82] Endif <http://gambasdoc.org/help/lang/endif> ' iLast
[83]
[84] ArrayToGrid()
[85] iLast= Column
[86] End <http://gambasdoc.org/help/lang/end> ' GridView1_ColumnClick(..) cheers, Frank
Op 31-03-16 om 02:33 schreef T Lee Davidson:
> Thank you for your effort, Gianluigi. But, I am not using a database; just a TableView of data.
>
> When a TableView's Sorted property is set to True, clicking on a column header toggles the sort indicator and raises the
> TableView's Sort event.
>
> I need to sort the TableView rows based on the values in whichever column the header was clicked.
>
>
> On 03/30/2016 06:06 PM, Gianluigi wrote:
>> Not sure if I understand the question, but something like that, could help?
>>
>> If TableView1.Columns.Ascending Then
>> sMySql = "SELECT *"
>> sMySql &= " FROM customers"
>> sMySql &= " ORDER BY surname ASC,"
>> sMySql &= " name ASC"
>> sMySql &= ";"
>> Else
>> sMySql = "SELECT *"
>> sMySql &= " FROM customers"
>> sMySql &= " ORDER BY surname DESC,"
>> sMySql &= " name DESC"
>> sMySql &= ";"
>> Endif
>>
>> Regards
>> Gianluigi
>>
>> 2016-03-30 22:18 GMT+02:00 T Lee Davidson <t.lee.davidson at ...626...>:
>>
>>> The documentation for TableView shows a Sorted property which says,
>>> "Sorting the data is not done automatically. It must be done
>>> by user code." But, the page does not give any clues regarding how to
>>> accomplish that. Though, obviously, sorting should be done
>>> in the Sort event handler.
>>>
>>> In the past, I have used an array of objects to store the data represented
>>> in the TableView. This provided use of Object[].Sort
>>> with the _compare function.
>>>
>>> This time around, I am attempting to eliminate the redundancy of duplicate
>>> data containers (store and view) and the cumbersome
>>> syncing of the data and the view. (Perhaps I should just simply use a
>>> SQLite DB and a DataView?)
>>>
>>> There appears to be no TableView/GridView or GridView.Columns Sort method.
>>>
>>> Does anyone have any hints as to how to sort a TableView?
>>>
>>>
>>> --
>>> Lee
>>> __________
>>>
>>> "Artificial Intelligence is no match for natural stupidity."
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Transform Data into Opportunity.
>>> Accelerate data analysis in your applications with
>>> Intel Data Analytics Acceleration Library.
>>> Click to learn more.
>>> http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
>>> _______________________________________________
>>> Gambas-user mailing list
>>> Gambas-user at lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>
>> ------------------------------------------------------------------------------
>> Transform Data into Opportunity.
>> Accelerate data analysis in your applications with
>> Intel Data Analytics Acceleration Library.
>> Click to learn more.
>> http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
>> _______________________________________________
>> Gambas-user mailing list
>> Gambas-user at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>
More information about the User
mailing list