[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