Joel
I had to implement something similar last year and you are right, its a bit of a palaver to implement, I had to do it in a control on the page and would pass in the full list of events as an property (XML string).
* read the list of events into sortable structure (I used a .Net List<Event> where Event is my class including a Date)
* implement a date sorter that gets items in the srrtable list greater than today, and limited by number. ( I used a LINQ query as follows)
var varResults = (
from a
in Data.Items
where a.ItemDate >= m_dateToday
orderby a.ItemDate ascending
select a
).Take(2); // the number of events to show from this date
a caveat is this the number of results may return 0.
Stu Wilson