asked on
protected void Page_Load(object sender, EventArgs e)
{
panelPaginator.CssClass = CssClass;
panelPaginator.Attributes.Add("style", style);
string alignStr = "left";
switch (Align)
{
case HorizontalAlign.Center: alignStr = "center"; break;
case HorizontalAlign.Left: alignStr = "left"; break;
case HorizontalAlign.Right: alignStr = "right"; break;
case HorizontalAlign.Justify: alignStr = "center"; break;
case HorizontalAlign.NotSet: alignStr = "left"; break;
}
tdPaginator.Attributes.Add("style", "text-align:" + alignStr);
}
protected void lbNavigator_Click(object sender, EventArgs e)
{
int pageToGo = PageNumber;
try { pageToGo = Int32.Parse((sender as LinkButton).CommandName); }
catch (Exception ex)
{
string command = (sender as LinkButton).CommandName;
if (command.Equals("Previous"))
{
if (PageNumber - 1 == 0)
{
pageToGo = 1;
}
else
{
pageToGo = PageNumber - 1;
}
}
else if (command.Equals("Next"))
{
double tempDouble = TotalItems / ItemPerPage;
int totalNumberPages = Int32.Parse(Math.Ceiling(tempDouble).ToString());
if (PageNumber + 1 == totalNumberPages)
{
pageToGo = PageNumber;
}
else
{
pageToGo = PageNumber + 1;
}
}
}
PageNumber = pageToGo;
Navigate(this, new NavigateEventArgs(PageNumber, ItemPerPage, TotalItems));
PopulateNavigationButtons();
}
protected override void CreateChildControls()
{
base.CreateChildControls();
PopulateNavigationButtons();
}
protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
EnsureChildControls();
}
protected void PopulateNavigationButtons()
{
panelPaginatorInner.Controls.Clear();
double tempDouble = TotalItems / ItemPerPage;
int totalNumberPages = Int32.Parse(Math.Ceiling(tempDouble).ToString());
LinkedList<LinkButton> navigators = new LinkedList<LinkButton>();
int maxLength = totalNumberPages < 9 ? totalNumberPages : 9;
int lowNum = PageNumber;
int highNum = PageNumber;
navigators.AddFirst(GetLinkButton(PageNumber.ToString(), PageNumber.ToString(), "PaginatorNavigatorLink ActivePaginatorNavigatorLink"));
while (navigators.Count < maxLength && totalNumberPages > 1)
{
lowNum = lowNum - 1;
highNum = highNum + 1;
if(lowNum > 0){
navigators.AddFirst(GetLinkButton(lowNum.ToString(), lowNum.ToString(), "PaginatorNavigatorLink InActivePaginatorNavigatorLink"));
}
if(highNum <= totalNumberPages){
navigators.AddLast(GetLinkButton(highNum.ToString(), highNum.ToString(), "PaginatorNavigatorLink InActivePaginatorNavigatorLink"));
}
}
if((lowNum - 1) > 3)
{
navigators.AddFirst(GetLinkButton("", "...", "PaginatorDot"));
navigators.AddFirst(GetLinkButton(2.ToString(), 2.ToString(), "PaginatorNavigatorLink InActivePaginatorNavigatorLink"));
navigators.AddFirst(GetLinkButton(1.ToString(), 1.ToString(), "PaginatorNavigatorLink InActivePaginatorNavigatorLink"));
}
if ((totalNumberPages - highNum) > 3)
{
navigators.AddLast(GetLinkButton("", "...", "PaginatorDot"));
navigators.AddLast(GetLinkButton((totalNumberPages - 1).ToString(), (totalNumberPages - 1).ToString(), "PaginatorNavigatorLink InActivePaginatorNavigatorLink"));
navigators.AddLast(GetLinkButton(totalNumberPages.ToString(), totalNumberPages.ToString(), "PaginatorNavigatorLink InActivePaginatorNavigatorLink"));
}
navigators.AddFirst(GetLinkButton("Previous", "<< Önceki", "PaginatorNavigatorLink InActivePaginatorNavigatorLink"));
navigators.AddLast(GetLinkButton("Next", "Sonraki >>", "PaginatorNavigatorLink InActivePaginatorNavigatorLink"));
foreach (LinkButton l in navigators)
{
panelPaginatorInner.Controls.Add(l);
}
}
private LinkButton GetLinkButton(string commandName, string text, string cssClass)
{
LinkButton lbNavigator = new LinkButton();
lbNavigator.CommandName = commandName.ToString();
lbNavigator.ID = "NavigatorLink" + commandName;
lbNavigator.Text = text.ToString();
if (commandName.Equals("Previous")) { lbNavigator.Attributes.Add("style", "margin:0px 1px 0px 0px;"); }
if (commandName.Equals("Next")) { lbNavigator.Attributes.Add("style", "margin:0px 0px 0px 1px;"); }
lbNavigator.Click += new EventHandler(lbNavigator_Click);
lbNavigator.Attributes.Add("class", cssClass);
return lbNavigator;
}