Tech
Forums
Jobs
Books
Events
Videos
Live
More
Interviews
Certification
Training
Career
Members
News
Blogs
Contribute
An Article
A Blog
A Video
An Ebook
An Interview Question
Register
Login
1
Answer
How to add pagination like google ?
Cassie Mod
7y
183
1
Reply
HI,
ive got the following repeater but how can i add paginanion like google because the old one isn't woking properly.
<div
class
=
"content last"
>
<asp:Repeater ID=
"rptUsers"
runat=
"server"
>
<HeaderTemplate>
<table style=
"width: 100%;"
>
<thead>
<tr>
<th
class
=
"column-xxxl"
>
<asp:LinkButton ID=
"sortNameLink"
CssClass=
'<%# GetSortArrowCssClass(KeyConstants.UserNameColumn) %>'
runat=
"server"
OnClick=
"SortColumn_Click"
>Naam</asp:LinkButton>
</th>
<th
class
=
"column-xl"
>
<asp:LinkButton ID=
"sortPhoneNumberLink"
CssClass=
'<%# GetSortArrowCssClass(KeyConstants.UserPhoneNumberColumn) %>'
runat=
"server"
OnClick=
"SortColumn_Click"
>Telefoonnummer</asp:LinkButton>
</th>
<th
class
=
"column-l"
>
<asp:LinkButton ID=
"sortInternalNumberLink"
CssClass=
'<%# GetSortArrowCssClass(KeyConstants.UserInternalNumberColumn) %>'
runat=
"server"
OnClick=
"SortColumn_Click"
>Intern Nummer</asp:LinkButton>
</th>
<%
if
(Features.Locations)
{
%>
<th
class
=
"column-l"
>
<asp:LinkButton ID=
"sortLocationLink"
CssClass=
'<%# GetSortArrowCssClass(KeyConstants.UserLocationColumn) %>'
runat=
"server"
OnClick=
"SortColumn_Click"
>Afdeling</asp:LinkButton>
</th>
<% } %>
<th
class
=
"column-xxxl"
>
<asp:LinkButton ID=
"sortEmailLink"
CssClass=
'<%# GetSortArrowCssClass(KeyConstants.UserEmailColumn) %>'
runat=
"server"
OnClick=
"SortColumn_Click"
>Email</asp:LinkButton>
</th>
<th
class
=
"column-s"
style=
"text-align: center;"
>
<asp:LinkButton ID=
"sortQueueLink"
CssClass=
'<%# GetSortArrowCssClass(KeyConstants.UserQueueColumn) %>'
runat=
"server"
OnClick=
"SortColumn_Click"
>Wachtrij</asp:LinkButton>
</th>
<%
if
(Features !=
null
&& Features.DeleteUsers)
{ %>
<th
class
=
"column-xxs"
style=
"text-align: center;"
>
</th>
<% } %>
</tr>
</thead>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:HyperLink ID=
"phoneManagementHyperLink"
runat=
"server"
Text=
'<%# (Container.DataItem as WcfUser).firstName + " " + (Container.DataItem as WcfUser).lastName%>'
NavigateUrl=
'<%#PortalApplication.GetUrl(PortalApplication.GetCommandByName(ApplicationCommands.UserEdit).Url)+string.Format("?userId={0}", (Container.DataItem as WcfUser).userId)%>'
/>
</td>
<td>
<%# (Container.DataItem
as
WcfUser).phoneNumber%>
</td>
<td>
<%# (Container.DataItem
as
WcfUser).extension%>
</td>
<%
if
(Features !=
null
&& Features.Locations)
{
%>
<td>
<%# (Container.DataItem
as
WcfUser).departmentFullPath%>
</td>
<% } %>
<td>
<%# (Container.DataItem
as
WcfUser).emailAddress%>
</td>
<td>
<div
class
=
'icon-16 active read-only check'
style=
'<%# (Container.DataItem as WcfUser).hasCallQueueService ? "margin: 0 auto;": "display:none;" %>'
></div>
</td>
<%
if
(Features !=
null
&& Features.DeleteUsers)
{ %>
<td
class
=
"column-controls"
>
<asp:Button ID=
"deleteUserButton"
runat=
"server"
CommandName=
"Gebruiker Verwijderen"
OnClientClick=
"return confirm('Weet u zeker dat u deze gebruiker wilt verwijderen?')"
CssClass=
"icon-16 bin"
OnClick=
"DeleteUserButton_Click"
CommandArgument=
"<%# (Container.DataItem as WcfUser).userId %>"
/>
</td>
<% } %>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
<div style=
"margin: 5px auto; width: 450px;"
>
<asp:Button ID=
"firstPageButton"
runat=
"server"
Text=
" First "
OnClick=
"firstPageButton_Click"
CssClass=
"button-s"
/>
<asp:Button ID=
"prevThreePagesButton"
runat=
"server"
Text=
" <<< "
OnClick=
"prevThreePagesButton_Click"
CssClass=
"button-s"
/>
<asp:Button ID=
"prevButton"
runat=
"server"
Text=
" < "
OnClick=
"prevButton_Click"
CssClass=
"button-s"
/>
<asp:Label ID=
"currentPageLabel"
runat=
"server"
CssClass=
"label label-xxs"
Style=
"text-align: center;"
/>
<asp:Button ID=
"nextButton"
runat=
"server"
Text=
" > "
OnClick=
"nextButton_Click"
CssClass=
"button-s"
/>
<asp:Button ID=
"nextThreePagesButton"
runat=
"server"
Text=
" >>> "
OnClick=
"nextThreePagesButton_Click"
CssClass=
"button-s"
/>
<asp:Button ID=
"lastPageButton"
runat=
"server"
Text=
" Last "
OnClick=
"lastPageButton_Click"
CssClass=
"button-s"
/>
</div>
<div>
<asp:Label ID=
"CurrentPageOfTotalPagesLabel"
Visible=
"True"
runat=
"server"
CssClass=
"label label-xxl"
Style=
"text-align: right; float: right"
/>
</div>
</FooterTemplate>
</asp:Repeater>
<div
class
=
"row error"
>
<asp:Literal ID=
"FailureTextLiteral"
runat=
"server"
EnableViewState=
"False"
/>
</div>
</div>
public
partial
class
UsersControl : CompleetControl
{
protected
Features Features;
private
User _user;
private
Guid _sessionId;
public
int
PageSize = 5;
private
static
int
_pageCount;
private
static
int
_userAmount;
protected
void
Page_Load(
object
sender, EventArgs e)
{
_sessionId = Guid.Parse(HttpContext.Current.Session[
"BWSESSION"
].ToString());
try
{
if
(PortalApplication ==
null
)
return
;
Features =
new
Features(PortalApplication.User);
if
(!Features.ReadUsers)
{
PortalApplication.ExecuteCommand(PortalApplication.GetAfterErrorCommand(404));
return
;
}
if
(!IsPostBack)
FillRptUsers();
AddUserHyperLink.NavigateUrl = PortalApplication.GetUrl(PortalApplication.GetCommandByName(ApplicationCommands.UserAdd).Url);
}
catch
(Exception ex)
{
PortalApplication.HandleException(ex);
ShowFailureText();
}
}
public
void
FillRptUsers()
{
//trim filter
char
[] charsToTrim = {
' '
,
'\t'
};
UserFilter.Text = UserFilter.Text.Trim(charsToTrim);
// set start index
var startIndex = PageSize*CurrentPage;
// Get sortingmethod and SortingColumn
var sorthingMethod = (
string
) ViewState[
"SortOrder"
];
var sorthingColumn = (
string
) ViewState[
"SortColumn"
];
if
(
string
.IsNullOrEmpty(sorthingMethod))
sorthingMethod =
"Asc"
;
if
(
string
.IsNullOrEmpty(sorthingColumn))
sorthingColumn =
"Name"
;
var serviceProviderId = PortalApplication.User.serviceProviderId;
var groupId = PortalApplication.User.groupId;
var userResponse = PortalApplication.GetGroupUsers(
serviceProviderId: serviceProviderId,
groupId: groupId,
filter: UserFilter.Text,
curPage: CurrentPage,
startIndex: startIndex,
limit: PageSize,
sortOrder: sorthingMethod,
sortColumn: sorthingColumn
);
var users = userResponse.Item1;
_userAmount = userResponse.Item2;
//if ((string)ViewState["SortOrder"] == KeyConstants.AscSortOrder)
// switch ((string)ViewState["SortColumn"])
// {
// case KeyConstants.UserNameColumn:
// users = users.OrderBy(x => x.firstName).ThenBy(x => x.lastName).ToList();
// break;
// case KeyConstants.UserPhoneNumberColumn:
// users = users.OrderBy(x => x.phoneNumber).ToList();
// break;
// case KeyConstants.UserInternalNumberColumn:
// users = users.OrderBy(x => x.extension).ToList();
// break;
// case KeyConstants.UserLocationColumn:
// users = users.OrderBy(x => x.departmentFullPath).ToList();
// break;
// case KeyConstants.UserEmailColumn:
// users = users.OrderBy(x => x.emailAddress).ToList();
// break;
// case KeyConstants.UserQueueColumn:
// users = users.OrderBy(x => x.hasCallQueueService).ToList();
// break;
// }
//else if ((string)ViewState["SortOrder"] == KeyConstants.DescSortOrder)
// switch ((string)ViewState["SortColumn"])
// {
// case KeyConstants.UserNameColumn:
// users = users.OrderByDescending(x => x.firstName).ThenByDescending(x => x.lastName).ToList();
// break;
// case KeyConstants.UserPhoneNumberColumn:
// users = users.OrderByDescending(x => x.phoneNumber).ToList();
// break;
// case KeyConstants.UserInternalNumberColumn:
// users = users.OrderByDescending(x => x.extension).ToList();
// break;
// case KeyConstants.UserLocationColumn:
// users = users.OrderByDescending(x => x.departmentFullPath).ToList();
// break;
// case KeyConstants.UserEmailColumn:
// users = users.OrderByDescending(x => x.emailAddress).ToList();
// break;
// case KeyConstants.UserQueueColumn:
// users = users.OrderByDescending(x => x.hasCallQueueService).ToList();
// break;
// }
//else
// users = users.OrderBy(x => x.firstName).ThenBy(x => x.lastName).ToList();
// Consistant numbers:
foreach
(var user
in
users)
user.phoneNumber = CompleetApplication.E164ToLocal(user.phoneNumber);
var dataSource =
new
PagedDataSource
{
DataSource = users,
AllowPaging =
true
,
PageSize = PageSize,
VirtualCount = _userAmount
};
rptUsers.DataSource = dataSource;
rptUsers.DataBind();
_pageCount = _userAmount%PageSize == 0 ? _userAmount/PageSize : (_userAmount/PageSize) + 1;
SetPageControl(dataSource);
}
public
void
SetPageControl(PagedDataSource dataSource)
{
var currentPageLabel = (Label)rptUsers.Controls[rptUsers.Controls.Count - 1].Controls[0].FindControl(
"currentPageLabel"
);
var nextPageButton = (Button)rptUsers.Controls[rptUsers.Controls.Count - 1].Controls[0].FindControl(
"nextButton"
);
var prevPageButton = (Button)rptUsers.Controls[rptUsers.Controls.Count - 1].Controls[0].FindControl(
"prevButton"
);
var prevThreePagesButton = (Button)rptUsers.Controls[rptUsers.Controls.Count - 1].Controls[0].FindControl(
"prevThreePagesButton"
);
var nextThreePagesButton = (Button)rptUsers.Controls[rptUsers.Controls.Count - 1].Controls[0].FindControl(
"nextThreePagesButton"
);
var firstPageButton = (Button)rptUsers.Controls[rptUsers.Controls.Count - 1].Controls[0].FindControl(
"firstPageButton"
);
var lastPageButton = (Button)rptUsers.Controls[rptUsers.Controls.Count - 1].Controls[0].FindControl(
"lastPageButton"
);
var currentPageOfTotalPagesLabel = (Label)rptUsers.Controls[rptUsers.Controls.Count - 1].Controls[0].FindControl(
"CurrentPageOfTotalPagesLabel"
);
nextPageButton.Visible =
true
;
prevPageButton.Visible =
true
;
prevThreePagesButton.Visible =
true
;
nextThreePagesButton.Visible =
true
;
firstPageButton.Visible =
true
;
lastPageButton.Visible =
true
;
currentPageLabel.Text = (CurrentPage + 1).ToString();
// shows current page of total pages
var itemsvalue = ((CurrentPage*10) + 10) > _userAmount ? _userAmount : (CurrentPage*10) + 10;
currentPageOfTotalPagesLabel.Text = $
"Items {(CurrentPage * 10) + 1} t/m {itemsvalue} van {_userAmount}"
;
if
(dataSource.PageCount == 1)
{
prevPageButton.Visible =
true
;
currentPageLabel.Visible =
true
;
nextPageButton.Visible =
true
;
prevThreePagesButton.Visible =
true
;
nextThreePagesButton.Visible =
true
;
firstPageButton.Visible =
true
;
lastPageButton.Visible =
true
;
}
if
(CurrentPage + 1 >= _pageCount)
{
nextPageButton.Visible =
false
;
nextThreePagesButton.Visible =
false
;
lastPageButton.Visible =
false
;
}
if
(CurrentPage == 0)
{
prevPageButton.Enabled =
false
;
prevPageButton.Text =
" "
;
prevPageButton.Attributes.CssStyle.Add(HtmlTextWriterStyle.BackgroundColor,
"transparent"
);
prevPageButton.Attributes.CssStyle.Add(HtmlTextWriterStyle.BorderWidth,
"0"
);
prevThreePagesButton.Enabled =
false
;
prevThreePagesButton.Text =
" "
;
prevThreePagesButton.Attributes.CssStyle.Add(HtmlTextWriterStyle.BackgroundColor,
"transparent"
);
prevThreePagesButton.Attributes.CssStyle.Add(HtmlTextWriterStyle.BorderWidth,
"0"
);
firstPageButton.Enabled =
false
;
firstPageButton.Text =
" "
;
firstPageButton.Attributes.CssStyle.Add(HtmlTextWriterStyle.BackgroundColor,
"transparent"
);
firstPageButton.Attributes.CssStyle.Add(HtmlTextWriterStyle.BorderWidth,
"0"
);
}
}
public
int
CurrentPage
{
get
{
var o = ViewState[
"_CurrentPage"
];
if
(o ==
null
)
return
0;
return
(
int
)o;
}
set
{
ViewState[
"_CurrentPage"
] = value;
}
}
protected
void
prevButton_Click(
object
sender, EventArgs e)
{
CurrentPage -= 1;
FillRptUsers();
}
protected
void
prevThreePagesButton_Click(
object
sender, EventArgs e)
{
CurrentPage -= 3;
FillRptUsers();
}
protected
void
firstPageButton_Click(
object
sender, EventArgs e)
{
CurrentPage = 0;
FillRptUsers();
}
protected
void
nextButton_Click(
object
sender, EventArgs e)
{
CurrentPage += 1;
FillRptUsers();
}
protected
void
nextThreePagesButton_Click(
object
sender, EventArgs e)
{
CurrentPage += 3;
FillRptUsers();
}
protected
void
lastPageButton_Click(
object
sender, EventArgs e)
{
CurrentPage = _pageCount -1;
FillRptUsers();
}
Post
Reset
Cancel
Answers (
1
)
Next Recommended Forum
Speech to text recognition
How to Integrate windows media player in asp.net?