The commands described in this reference page enable the user to sort the items of a tablelist widget based on one or more of its columns, with the aid of the left mouse button.
If the tablelist::sortByColumn command was specified
  as the value of the -labelcommand
  configuration option, then by pressing mouse button 1 over one of the header
  labels and later releasing it over the same label, the items will be sorted
  based on the elements of the corresponding column.
If the tablelist::addToSortColumns command was
  specified as the value of the -labelcommand2
  configuration option, then by pressing mouse button 1 together with the
  Shift key over one of the header labels and later releasing it
  over the same label, the corresponding column will be appended to the list of
  sort columns, or (if it was already contained in that list) the corresponding
  sort order will be toggled; in both cases, the items will be sorted based on
  the updated lists of sort columns and sort orders.
tablelist::sortByColumn
  Commandtablelist::sortByColumn – Sort the items of a
    tablelist widget based on one of its columnstablelist::sortByColumn pathName columnIndex
pathName
    based on the elements of the column specified by
    columnIndex.  This is done by invoking the
    sortbycolumn subcommand
    of the Tcl command associated with the given tablelist widget.  If the
    items were last sorted in increasing order, based on the same column given
    by columnIndex, and no subsequent invocation of the
    resetsortinfo
    subcommand was made, then the last argument passed to
    sortbycolumn will be -decreasing,
    otherwise -increasing.<<TablelistColumnSorted>> is
    generated.  For Tk versions 8.5 or higher, this virtual event is
    generated with its -data option set to a list
    consisting of the numerical column index and the sort order
    (decreasing or increasing). 
    The command returns the sort order, as decreasing or
    increasing.-showlinenumbers
    option has been set to true, then the actions described above are not
    performed and the return value is an empty string.tablelist::sortByColumn is usually
    specified as the value of the -labelcommand
    configuration option for a tablelist widget.tablelist::addToSortColumns
  Commandtablelist::addToSortColumns – Add a column index to
    the list of sort columns and perform the multi-column sortingtablelist::addToSortColumns pathName columnIndex
columnIndex to the list of sort columns of the tablelist widget pathName
    and sorts the items based on the elements of the columns indicated by the
    modified list.  This is done by invoking the sortbycolumnlist
    subcommand of the Tcl command associated with the given tablelist
    widget.  The two arguments passed to
    sortbycolumnlist are built as follows: (a) if the given
    column index is already contained in the widget's list of sort columns
    (returned by the sortcolumnlist
    subcommand) then this list is left unchanged and the sort order list
    (returned by the sortorderlist
    subcommand) is updated by toggling its corresponding element from
    increasing to decreasing and
    vice-versa; (b) otherwise the column index is appended to the list of sort
    columns and the value increasing is appended to the
    list of sort orders.sortbycolumnlist subcommand, the virtual event
    <<TablelistColumnsSorted>> (note the plural
    form!) is generated.  For Tk versions 8.5 or higher, this virtual
    event is generated with its -data option set to a list
    consisting of the two above-mentioned updated lists passed to
    sortbycolumnlist as arguments.  The command
    returns the new sort order corresponding to the given column, as
    decreasing or increasing.-showlinenumbers
    option has been set to true, then the actions described above are not
    performed and the return value is an empty string.tablelist::addToSortColumns is usually
    specified as the value of the -labelcommand2
    configuration option for a tablelist widget.