Ok i was trying to add paging feature in nopCommerce 1.4version
This is what i did:
1) adding these things in database (from admin section)
In admin section > Content Management > Localization
I added the following:
English Admin.BlogSettings.PostsPageSize Posts page size: Edit
English Admin.BlogSettings.PostsPageSize.RangeErrorMessage The value must be from 0 to 999999. Edit
English Admin.BlogSettings.PostsPageSize.RequiredErrorMessage Post page size is required. Edit
English Admin.BlogSettings.PostsPageSize.Tooltip Set the page size for posts Edit
2) In admin section > Configuration > All Settings
I added this:
Blog.PostsPageSize 10 Edit
3) Now in Administration / Modules / BlogSettings.ascx
Added this in the end:
<td class="adminTitle">
<nopCommerce:ToolTipLabel runat="server" ID="lblPostsPageSize" Text="<% $NopResources:Admin.BlogSettings.PostsPageSize %>"
ToolTip="<% $NopResources:Admin.BlogSettings.PostsPageSize.Tooltip %>" ToolTipImage="~/Administration/Common/ico-help.gif" />
</td>
<td class="adminData">
<nopCommerce:NumericTextBox runat="server" CssClass="adminInput" ID="txtPostsPageSize"
RequiredErrorMessage="<% $NopResources:Admin.BlogSettings.PostsPageSize.RequiredErrorMessage %>"
MinimumValue="0" MaximumValue="999999" Value="10" RangeErrorMessage="<% $NopResources:Admin.BlogSettings.PostsPageSize.RangeErrorMessage %>"
ValidationGroup="BlogSettings"></nopCommerce:NumericTextBox>
</td>
4) In BlogSettings.ascx.cs
Changed this:
protected void BindData()
{
cbEnableBlog.Checked = BlogManager.BlogEnabled;
cbAllowNotRegisteredUsersToLeaveComments.Checked = BlogManager.AllowNotRegisteredUsersToLeaveComments;
cbNotifyAboutNewBlogComments.Checked = BlogManager.NotifyAboutNewBlogComments;
}
protected void btnSave_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
try
{
BlogManager.BlogEnabled = cbEnableBlog.Checked;
BlogManager.AllowNotRegisteredUsersToLeaveComments = cbAllowNotRegisteredUsersToLeaveComments.Checked;
BlogManager.NotifyAboutNewBlogComments = cbNotifyAboutNewBlogComments.Checked;
Response.Redirect("BlogSettings.aspx");
}
catch (Exception exc)
{
ProcessException(exc);
}
}
}
To This:
protected void BindData()
{
cbEnableBlog.Checked = BlogManager.BlogEnabled;
cbAllowNotRegisteredUsersToLeaveComments.Checked = BlogManager.AllowNotRegisteredUsersToLeaveComments;
cbNotifyAboutNewBlogComments.Checked = BlogManager.NotifyAboutNewBlogComments;
txtPostsPageSize.Value = BlogManager.PostsPageSize;
}
protected void btnSave_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
try
{
BlogManager.BlogEnabled = cbEnableBlog.Checked;
BlogManager.AllowNotRegisteredUsersToLeaveComments = cbAllowNotRegisteredUsersToLeaveComments.Checked;
BlogManager.NotifyAboutNewBlogComments = cbNotifyAboutNewBlogComments.Checked;
BlogManager.PostsPageSize = txtPostsPageSize.Value;
Response.Redirect("BlogSettings.aspx");
}
catch (Exception exc)
{
ProcessException(exc);
}
}
}
5) Now in NopCommerceStore folder / Modules / Blog.ascx
Added this in the end:
<div class="pager">
<nopCommerce:Pager runat="server" ID="postsPager" QueryStringProperty="p" FirstButtonText="<% $NopResources:Pager.First %>"
LastButtonText="<% $NopResources:Pager.Last %>" NextButtonText="<% $NopResources:Pager.Next %>"
PreviousButtonText="<% $NopResources:Pager.Previous %>" CurrentPageText="Pager.CurrentPage" />
</div>
6) In Blog.ascx.cs
Changed This:
private void BindData()
{
BlogPostCollection blogPosts = BlogManager.GetAllBlogPosts(NopContext.Current.WorkingLanguage.LanguageID);
rptrBlogPosts.DataSource = blogPosts;
rptrBlogPosts.DataBind();
}
To This:
private void BindData()
{
int totalRecords = 0;
int pageSize = BlogManager.PostsPageSize;
var blogPosts = BlogManager.GetAllBlogPosts(NopContext.Current.WorkingLanguage.LanguageId, pageSize, CurrentPageIndex, out totalRecords);
if (blogPosts.Count > 0)
{
this.postsPager.PageSize = pageSize;
this.postsPager.TotalRecords = totalRecords;
this.postsPager.PageIndex = this.CurrentPageIndex;
rptrBlogPosts.DataSource = blogPosts;
rptrBlogPosts.DataBind();
}
}
public int CurrentPageIndex
{
get
{
int _pageIndex = CommonHelper.QueryStringInt(postsPager.QueryStringProperty);
_pageIndex--;
if (_pageIndex < 0)
_pageIndex = 0;
return _pageIndex;
}
}
And, Changed This:
protected void rptrBlogPosts_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
BlogPost blogPost = e.Item.DataItem as BlogPost;
Literal lComments = e.Item.FindControl("lComments") as Literal;
lComments.Text = String.Format(GetLocaleResourceString("Blog.CommentsLink"), blogPost.BlogComments.Count);
}
}
To This:
protected void rptrBlogPosts_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
var blogPost = e.Item.DataItem as BlogPost;
var lComments = e.Item.FindControl("lComments") as Literal;
lComments.Text = String.Format(GetLocaleResourceString("Blog.CommentsLink"), blogPost.BlogComments.Count);
}
}