public class PagerDropDownList : DropDownList {

public Int32 TotalPageCount { get; set; }

protected override void OnPreRender(EventArgs e) {
base.OnPreRender(e);

for (Int32 c = 1; c <= TotalPageCount; c++) {
	this.Items.Add(new ListItem(c.ToString("00")));
}

DataPager pager = ((DataPagerFieldItem)this.Parent).Pager;
Int32 currentPageIndex = (Int32)Math.Ceiling(
	(double)pager.StartRowIndex / pager.PageSize);

this.Items[currentPageIndex].Selected = true;
}

protected override void OnSelectedIndexChanged(EventArgs e) {
base.OnSelectedIndexChanged(e);

Int32 currentPageIndex = Int32.Parse(this.SelectedValue);
DataPager pager = ((DataPagerFieldItem)this.Parent).Pager;
pager.SetPageProperties((currentPageIndex - 1) * pager.MaximumRows,
	pager.MaximumRows, true);
}
}
