TableCell InitializeNumericPager (DataGridItem item, int columnSpan,
PagedDataSource paged)
{
TableCell res = new TableCell ();
res.ColumnSpan = columnSpan;
int button_count = PagerStyle.PageButtonCount;
int current = paged.CurrentPageIndex;
int start = current - (current % button_count);
int end = start + button_count;
if (end > paged.PageCount)
end = paged.PageCount;
if (start > 0) {
LinkButton link = new LinkButton ();
link.Text = "...";
link.CommandName = PageCommandName;
link.CommandArgument = start.ToString (Helpers.InvariantCulture);
link.CausesValidation = false;
res.Controls.Add (link);
res.Controls.Add (new LiteralControl (" "));
}
for (int i = start; i < end; i++) {
Control number = null;
string page = (i + 1).ToString (Helpers.InvariantCulture);
if (i != paged.CurrentPageIndex) {
LinkButton link = new LinkButton ();
link.Text = page;
link.CommandName = PageCommandName;
link.CommandArgument = page;
link.CausesValidation = false;
number = link;
} else {
Label pageLabel = new Label();
pageLabel.Text = page;
number = pageLabel;
}
res.Controls.Add (number);
if (i < end - 1)
res.Controls.Add (new LiteralControl (" "));
}
if (end < paged.PageCount) {
res.Controls.Add (new LiteralControl (" "));
LinkButton link = new LinkButton ();
link.Text = "...";
link.CommandName = PageCommandName;
link.CommandArgument = (end + 1).ToString (Helpers.InvariantCulture);
link.CausesValidation = false;
res.Controls.Add (link);
}
return res;
}