There are several elements in salesforce.com that do not fire triggers; I now know of two of them. Normally this doesn't matter, since sorting the records isn't really an "edit" in the usual sense, but if you're depending on the trigger firing, you'll have a problem. Since SortOrder is also read-only via Apex Code (without a clever hack), you're better off ignoring it. Another situation where this occurs is the "activate"/"deactivate" links on the product list view; changing the active status won't fire any triggers. There are at least two viable workarounds. The first involves a scheduled Apex Class that scans the system for changes to the sort order (updated by a trigger into a custom field), and then performs an action based on those changes, while the second involves creating a Visualforce page, overriding the default sort page, and then simulating the sort via the sorting hack and firing the triggers with a normal DML operation afterwards. Either method is messy and prone to breaking if this functionality changes (which hasn't happened as of yet, thankfully).