Index: /trunk/src/VBox/ValidationKit/testmanager/core/testbox.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/core/testbox.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/core/testbox.py	(revision 65350)
@@ -671,30 +671,43 @@
     """
 
-    kiSortColumn_sName              =  0;
-    kiSortColumn_sOs                =  1;
-    kiSortColumn_sOsVersion         =  2;
-    kiSortColumn_sCpuVendor         =  3;
-    kiSortColumn_sCpuArch           =  4;
-    kiSortColumn_lCpuRevision       =  5;
-    kiSortColumn_cCpus              =  6;
-    kiSortColumn_cMbMemory          =  7;
-    kiSortColumn_cMbScratch         =  8;
-    kiSortColumn_fCpuNestedPaging   =  9;
-    kiSortColumn_iTestBoxScriptRev  = 10;
-    kiSortColumn_iPythonHexVersion  = 11;
-    kcMaxSortColumns                = 12;
+    kiSortColumn_sName              =  1;
+    kiSortColumn_sOs                =  2;
+    kiSortColumn_sOsVersion         =  3;
+    kiSortColumn_sCpuVendor         =  4;
+    kiSortColumn_sCpuArch           =  5;
+    kiSortColumn_lCpuRevision       =  6;
+    kiSortColumn_cCpus              =  7;
+    kiSortColumn_cMbMemory          =  8;
+    kiSortColumn_cMbScratch         =  9;
+    kiSortColumn_fCpuNestedPaging   = 10;
+    kiSortColumn_iTestBoxScriptRev  = 11;
+    kiSortColumn_iPythonHexVersion  = 12;
+    kcMaxSortColumns                = 13;
     kdSortColumnMap                 = {
-        kiSortColumn_sName:             'TestBoxesWithStrings.sName',
-        kiSortColumn_sOs:               'TestBoxesWithStrings.sOs',
-        kiSortColumn_sOsVersion:        'TestBoxesWithStrings.sOsVersion',
-        kiSortColumn_sCpuVendor:        'TestBoxesWithStrings.sCpuVendor',
-        kiSortColumn_sCpuArch:          'TestBoxesWithStrings.sCpuArch',
-        kiSortColumn_lCpuRevision:      'TestBoxesWithStrings.lCpuRevision',
-        kiSortColumn_cCpus:             'TestBoxesWithStrings.cCpus',
-        kiSortColumn_cMbMemory:         'TestBoxesWithStrings.cMbMemory',
-        kiSortColumn_cMbScratch:        'TestBoxesWithStrings.cMbScratch',
-        kiSortColumn_fCpuNestedPaging:  'TestBoxesWithStrings.fCpuNestedPaging',
-        kiSortColumn_iTestBoxScriptRev: 'TestBoxesWithStrings.iTestBoxScriptRev',
-        kiSortColumn_iPythonHexVersion: 'TestBoxesWithStrings.iPythonHexVersion',
+        0:                               'TestBoxesWithStrings.sName',
+        kiSortColumn_sName:              'TestBoxesWithStrings.sName',
+        -kiSortColumn_sName:             'TestBoxesWithStrings.sName DESC',
+        kiSortColumn_sOs:                'TestBoxesWithStrings.sOs',
+        -kiSortColumn_sOs:               'TestBoxesWithStrings.sOs DESC',
+        kiSortColumn_sOsVersion:         'TestBoxesWithStrings.sOsVersion',
+        -kiSortColumn_sOsVersion:        'TestBoxesWithStrings.sOsVersion DESC',
+        kiSortColumn_sCpuVendor:         'TestBoxesWithStrings.sCpuVendor',
+        -kiSortColumn_sCpuVendor:        'TestBoxesWithStrings.sCpuVendor DESC',
+        kiSortColumn_sCpuArch:           'TestBoxesWithStrings.sCpuArch',
+        -kiSortColumn_sCpuArch:          'TestBoxesWithStrings.sCpuArch DESC',
+        kiSortColumn_lCpuRevision:       'TestBoxesWithStrings.lCpuRevision',
+        -kiSortColumn_lCpuRevision:      'TestBoxesWithStrings.lCpuRevision DESC',
+        kiSortColumn_cCpus:              'TestBoxesWithStrings.cCpus',
+        -kiSortColumn_cCpus:             'TestBoxesWithStrings.cCpus DESC',
+        kiSortColumn_cMbMemory:          'TestBoxesWithStrings.cMbMemory',
+        -kiSortColumn_cMbMemory:         'TestBoxesWithStrings.cMbMemory DESC',
+        kiSortColumn_cMbScratch:         'TestBoxesWithStrings.cMbScratch',
+        -kiSortColumn_cMbScratch:        'TestBoxesWithStrings.cMbScratch DESC',
+        kiSortColumn_fCpuNestedPaging:   'TestBoxesWithStrings.fCpuNestedPaging',
+        -kiSortColumn_fCpuNestedPaging:  'TestBoxesWithStrings.fCpuNestedPaging DESC',
+        kiSortColumn_iTestBoxScriptRev:  'TestBoxesWithStrings.iTestBoxScriptRev',
+        -kiSortColumn_iTestBoxScriptRev: 'TestBoxesWithStrings.iTestBoxScriptRev DESC',
+        kiSortColumn_iPythonHexVersion:  'TestBoxesWithStrings.iPythonHexVersion',
+        -kiSortColumn_iPythonHexVersion: 'TestBoxesWithStrings.iPythonHexVersion DESC',
     };
 
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminbuild.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminbuild.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminbuild.py	(revision 65350)
@@ -78,7 +78,8 @@
     """
 
-    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp):
+    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, aiSelectedSortColumns = None):
         WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective,
-                                    sTitle = 'Builds', sId = 'builds', fnDPrint = fnDPrint, oDisp = oDisp);
+                                    sTitle = 'Builds', sId = 'builds', fnDPrint = fnDPrint, oDisp = oDisp,
+                                    aiSelectedSortColumns = aiSelectedSortColumns);
 
         self._asColumnHeaders = ['ID', 'Product', 'Branch', 'Version',
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminbuildblacklist.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminbuildblacklist.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminbuildblacklist.py	(revision 65350)
@@ -103,8 +103,8 @@
     """
 
-    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp):
+    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, aiSelectedSortColumns = None):
         WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective,
                                     sTitle = 'Build Blacklist', sId = 'buildsBlacklist',
-                                    fnDPrint = fnDPrint, oDisp = oDisp);
+                                    fnDPrint = fnDPrint, oDisp = oDisp, aiSelectedSortColumns = aiSelectedSortColumns);
 
         self._asColumnHeaders = ['ID', 'Failure Reason',
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminbuildcategory.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminbuildcategory.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminbuildcategory.py	(revision 65350)
@@ -42,8 +42,8 @@
     """
 
-    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp):
+    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, aiSelectedSortColumns = None):
         WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective,
                                     sTitle = 'Build Categories', sId = 'buildcategories',
-                                    fnDPrint = fnDPrint, oDisp = oDisp);
+                                    fnDPrint = fnDPrint, oDisp = oDisp, aiSelectedSortColumns = aiSelectedSortColumns);
         self._asColumnHeaders = ([ 'ID', 'Product', 'Repository', 'Branch', 'Build Type', 'OS/Architectures', 'Actions' ]);
         self._asColumnAttribs = (['align="right"', '', '', '', '', 'align="center"' ]);
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminbuildsource.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminbuildsource.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminbuildsource.py	(revision 65350)
@@ -80,8 +80,8 @@
     """
 
-    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp):
+    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, aiSelectedSortColumns = None):
         WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective,
                                     sTitle = 'Registered Build Sources', sId = 'build sources',
-                                    fnDPrint = fnDPrint, oDisp = oDisp);
+                                    fnDPrint = fnDPrint, oDisp = oDisp, aiSelectedSortColumns = aiSelectedSortColumns);
         self._asColumnHeaders = ['ID', 'Name', 'Description', 'Product',
                                  'Branch', 'Build Types', 'OS/ARCH', 'First Revision', 'Last Revision', 'Max Age',
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminfailurecategory.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminfailurecategory.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminfailurecategory.py	(revision 65350)
@@ -109,8 +109,8 @@
     """
 
-    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp):
+    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, aiSelectedSortColumns = None):
         WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective,
                                     sTitle = 'Failure Categories', sId = 'failureCategories',
-                                    fnDPrint = fnDPrint, oDisp = oDisp);
+                                    fnDPrint = fnDPrint, oDisp = oDisp, aiSelectedSortColumns = aiSelectedSortColumns);
 
         self._asColumnHeaders = ['ID', 'Short Description', 'Full Description', 'Actions' ]
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminfailurereason.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminfailurereason.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminfailurereason.py	(revision 65350)
@@ -124,8 +124,8 @@
     """
 
-    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp):
+    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, aiSelectedSortColumns = None):
         WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective,
                                     sTitle = 'Failure Reasons', sId = 'failureReasons',
-                                    fnDPrint = fnDPrint, oDisp = oDisp);
+                                    fnDPrint = fnDPrint, oDisp = oDisp, aiSelectedSortColumns = aiSelectedSortColumns);
 
         self._asColumnHeaders = ['ID', 'Category', 'Short Description',
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminglobalrsrc.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminglobalrsrc.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminglobalrsrc.py	(revision 65350)
@@ -88,8 +88,8 @@
     """
 
-    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp):
+    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, aiSelectedSortColumns = None):
         WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective,
                                     sTitle = 'Global Resources', sId = 'globalResources',
-                                    fnDPrint = fnDPrint, oDisp = oDisp)
+                                    fnDPrint = fnDPrint, oDisp = oDisp, aiSelectedSortColumns = aiSelectedSortColumns);
 
         self._asColumnHeaders = ['ID', 'Name', 'Description', 'Enabled', 'Actions' ]
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminschedgroup.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminschedgroup.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminschedgroup.py	(revision 65350)
@@ -94,8 +94,8 @@
     """
 
-    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp):
+    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, aiSelectedSortColumns = None):
         WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective,
                                     sTitle = 'Registered Scheduling Groups', sId = 'schedgroups',
-                                    fnDPrint = fnDPrint, oDisp = oDisp);
+                                    fnDPrint = fnDPrint, oDisp = oDisp, aiSelectedSortColumns = aiSelectedSortColumns);
 
         self._asColumnHeaders = [
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminsystemchangelog.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminsystemchangelog.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminsystemchangelog.py	(revision 65350)
@@ -58,7 +58,7 @@
     """
 
-    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, cDaysBack):
+    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, cDaysBack, aiSelectedSortColumns = None):
         WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, 'System Changelog',
-                                    fnDPrint = fnDPrint, oDisp = oDisp);
+                                    fnDPrint = fnDPrint, oDisp = oDisp, aiSelectedSortColumns = aiSelectedSortColumns);
         self._asColumnHeaders = [ 'When', 'User', 'Event', 'Details' ];
         self._asColumnAttribs = [ 'align="center"', 'align="center"', '', '' ];
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminsystemlog.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminsystemlog.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminsystemlog.py	(revision 65350)
@@ -42,7 +42,7 @@
     """
 
-    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp):
+    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, aiSelectedSortColumns = None):
         WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, 'System Log',
-                                    fnDPrint = fnDPrint, oDisp = oDisp);
+                                    fnDPrint = fnDPrint, oDisp = oDisp, aiSelectedSortColumns = aiSelectedSortColumns);
         self._asColumnHeaders = ['Date', 'Event', 'Message', 'Action'];
         self._asColumnAttribs = ['', '', '', 'align="center"'];
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmintestbox.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmintestbox.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmintestbox.py	(revision 65350)
@@ -180,8 +180,9 @@
     kcSecMaxStatusDeltaAlive = 15*60
 
-    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp):
+    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, aiSelectedSortColumns = None):
         # type: (list[TestBoxDataForListing], int, int, datetime.datetime, ignore, WuiAdmin) -> None
         WuiListContentWithActionBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective,
-                                              sTitle = 'TestBoxes', sId = 'users', fnDPrint = fnDPrint, oDisp = oDisp);
+                                              sTitle = 'TestBoxes', sId = 'users', fnDPrint = fnDPrint, oDisp = oDisp,
+                                              aiSelectedSortColumns = aiSelectedSortColumns);
         self._asColumnHeaders.extend([ 'Name', 'LOM', 'Status', 'Cmd',
                                        'Note', 'Script', 'Python', 'Group',
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmintestcase.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmintestcase.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmintestcase.py	(revision 65350)
@@ -59,7 +59,7 @@
     """
 
-    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp):
-        WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective,
-                                    sTitle = 'Test Cases', fnDPrint = fnDPrint, oDisp = oDisp);
+    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, aiSelectedSortColumns = None):
+        WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, sTitle = 'Test Cases',
+                                    fnDPrint = fnDPrint, oDisp = oDisp, aiSelectedSortColumns = aiSelectedSortColumns);
         self._asColumnHeaders = \
         [
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmintestgroup.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmintestgroup.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmintestgroup.py	(revision 65350)
@@ -84,9 +84,9 @@
     """
 
-    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp):
+    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, aiSelectedSortColumns = None):
         assert len(aoEntries) == 0 or isinstance(aoEntries[0], TestGroupDataEx)
 
-        WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective,
-                                    sTitle = 'Test Groups', fnDPrint = fnDPrint, oDisp = oDisp);
+        WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, sTitle = 'Test Groups',
+                                    fnDPrint = fnDPrint, oDisp = oDisp, aiSelectedSortColumns = aiSelectedSortColumns);
         self._asColumnHeaders = [ 'ID', 'Name', 'Description', 'Test Cases', 'Note', 'Actions' ];
         self._asColumnAttribs = [ 'align="right"', '', '', '', 'align="center"', 'align="center"' ];
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminuseraccount.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminuseraccount.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminuseraccount.py	(revision 65350)
@@ -67,7 +67,8 @@
     """
 
-    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp):
+    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, aiSelectedSortColumns = None):
         WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective,
-                                    sTitle = 'Registered User Accounts', sId = 'users', fnDPrint = fnDPrint, oDisp = oDisp);
+                                    sTitle = 'Registered User Accounts', sId = 'users', fnDPrint = fnDPrint, oDisp = oDisp,
+                                    aiSelectedSortColumns = aiSelectedSortColumns);
         self._asColumnHeaders = ['User ID', 'Name', 'E-mail', 'Full Name', 'Login Name', 'Actions'];
         self._asColumnAttribs = ['align="center"', 'align="center"', 'align="center"', 'align="center"', 'align="center"',
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuibase.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuibase.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuibase.py	(revision 65350)
@@ -804,5 +804,6 @@
         cItemsPerPage   = self.getIntParam(self.ksParamItemsPerPage, iMin = 2, iMax =   9999, iDefault = 300);
         iPage           = self.getIntParam(self.ksParamPageNo,       iMin = 0, iMax = 999999, iDefault = 0);
-        aiSortColumnsDup = self.getListOfIntParams(self.ksParamSortColumns, iMin = 0,
+        aiSortColumnsDup = self.getListOfIntParams(self.ksParamSortColumns,
+                                                   iMin = -getattr(oLogicType, 'kcMaxSortColumns', 0) + 1,
                                                    iMax = getattr(oLogicType, 'kcMaxSortColumns', 0), aiDefaults = []);
         aiSortColumns   = [];
@@ -814,5 +815,5 @@
         aoEntries  = oLogicType(self._oDb).fetchForListing(iPage * cItemsPerPage, cItemsPerPage + 1, tsEffective, aiSortColumns);
         oContent   = oListContentType(aoEntries, iPage, cItemsPerPage, tsEffective,
-                                      fnDPrint = self._oSrvGlue.dprint, oDisp = self);
+                                      fnDPrint = self._oSrvGlue.dprint, oDisp = self, aiSelectedSortColumns = aiSortColumns);
         (self._sPageTitle, self._sPageBody) = oContent.show();
         return True;
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuicontentbase.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuicontentbase.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuicontentbase.py	(revision 65350)
@@ -736,5 +736,6 @@
     """
 
-    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffectiveDate, sTitle, sId = None, fnDPrint = None, oDisp = None):
+    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffectiveDate, sTitle, sId = None, fnDPrint = None,
+                 oDisp = None, aiSelectedSortColumns = None):
         WuiContentBase.__init__(self, fnDPrint = fnDPrint, oDisp = oDisp);
         self._aoEntries         = aoEntries; ## @todo should replace this with a Logic object and define methods for querying.
@@ -750,4 +751,5 @@
         self._asColumnAttribs   = [];
         self._aaiColumnSorting  = [];   ##< list of list of integers
+        self._aiSelectedSortColumns = aiSelectedSortColumns; ##< list of integers
 
     def _formatCommentCell(self, sComment, cMaxLines = 3, cchMaxLine = 63):
@@ -937,4 +939,13 @@
         return sNavigation;
 
+    def _isSortingByColumnAscending(self, aiColumns):
+        """ Checks if we're already sorting by this column in ascending order """
+        # Just compare the first sorting column spec for now.
+        #if self._aiSelectedSortColumns is not None and len(aiColumns) <= len(self._aiSelectedSortColumns):
+        if  len(aiColumns) <= len(self._aiSelectedSortColumns):
+            if list(aiColumns) == list(self._aiSelectedSortColumns[:len(aiColumns)]):
+                return True;
+        return False;
+
     def _generateTableHeaders(self):
         """
@@ -950,6 +961,10 @@
             elif iHeader < len(self._aaiColumnSorting) and self._aaiColumnSorting[iHeader] is not None:
                 sHtml += '<th>'
-                sHtml += '<a href="javascript:ahrefActionSortByColumns(\'%s\', [%s]);">' \
-                       % (WuiDispatcherBase.ksParamSortColumns, ','.join([str(i) for i in self._aaiColumnSorting[iHeader]]));
+                if not self._isSortingByColumnAscending(self._aaiColumnSorting[iHeader]):
+                    sSortParams = ','.join([str(i) for i in self._aaiColumnSorting[iHeader]]);
+                else:
+                    sSortParams = ','.join([str(-i) for i in self._aaiColumnSorting[iHeader]]);
+                sHtml += '<a href="javascript:ahrefActionSortByColumns(\'%s\',[%s]);">' \
+                       % (WuiDispatcherBase.ksParamSortColumns, sSortParams);
                 sHtml += webutils.escapeElem(oHeader) + '</a></th>';
             else:
@@ -1021,7 +1036,8 @@
     """
 
-    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffectiveDate, sTitle, sId = None, fnDPrint = None, oDisp = None):
-        WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffectiveDate, sTitle,
-                                    sId = sId, fnDPrint = fnDPrint, oDisp = oDisp);
+    def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffectiveDate, sTitle, sId = None, fnDPrint = None,
+                 oDisp = None, aiSelectedSortColumns = None):
+        WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffectiveDate, sTitle, sId = sId,
+                                    fnDPrint = fnDPrint, oDisp = oDisp, aiSelectedSortColumns = aiSelectedSortColumns);
         self._aoActions     = None; # List of [ oValue, sText, sHover ] provided by the child class.
         self._sAction       = None; # Set by the child class.
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuitestresult.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuitestresult.py	(revision 65349)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuitestresult.py	(revision 65350)
@@ -764,9 +764,10 @@
     """
 
-    def __init__(self, aoEntries, cEntriesCount, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp):
+    def __init__(self, aoEntries, cEntriesCount, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp,
+                 aiSelectedSortColumns = None):
         """Override initialization"""
         WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective,
                                     sTitle = 'Ungrouped (%d)' % cEntriesCount, sId = 'results',
-                                    fnDPrint = fnDPrint, oDisp = oDisp);
+                                    fnDPrint = fnDPrint, oDisp = oDisp, aiSelectedSortColumns = aiSelectedSortColumns);
 
         self._cEntriesCount   = cEntriesCount
