Friday, May 27, 2011

Paging in Datalist or repeater + using hashtable

// I have a search Module in a project in which data is coming and populated by //datalist for more than 1 pages I have need for integrated paging in this datalist //and also I used hashtable on the basis of unique key and datasource of datalist .
PagedDataSource pg = new PagedDataSource();
string searchstring; int catid;
DataView dvData = new DataView(dt);
dvData.Sort = "PublishDate Desc";
ListDictionary myHashTable = new ListDictionary();
for (int j = 0; j < dvData.Count; j++)
{
if (dvData[j]["ArticleID"] != null)
{
//StringBuilder str = new StringBuilder(150);5+6
string str = dvData[j]["CategoryID"] + "~^`" + dvData[j]["ArticleID"] + "~^`" + dvData[j]["Title"] + "~^`" + dvData[j]["ListThumbnail"].ToString() + "~^`" + dvData[j]["GetPrintOrDay"].ToString() + "~^`" + dvData[j]["ShortStory"].ToString() + "~^`" + dvData[j]["PublishDate"].ToString();
myHashTable.Add(dvData[j]["ArticleID"].ToString(), str.Split("~^`".ToCharArray()));
}

}

pg.DataSource = myHashTable;
//pg.AllowCustomPaging = true;
pg.AllowPaging = true;
pg.PageSize = 20;
// Move to the appropriate page based on the query string.
try
{
pg.CurrentPageIndex = Int32.Parse(Request.QueryString["Page"].ToString());
}
catch (Exception ex)
{
pg.CurrentPageIndex = 0;
}
// Enable and/or disable the previous and next buttons
btnPrev.Enabled = !pg.IsFirstPage;
btnNext.Enabled = !pg.IsLastPage;
// Display which is the current page being displayed
lblCurrentPage.Text = "Page: " + (pg.CurrentPageIndex + 1).ToString();
lbltotalpages.Text = (dt.Rows.Count / 20).ToString();
if (dt.Rows.Count % 20 != 0)
{
lbltotalpages.Text = ((dt.Rows.Count / 20) + 1).ToString();
}
// Attach data source to the datalist
if (dt.Rows.Count > 20)
divNav.Visible = true;
rptDepartmentCate.DataSource = pg;
rptDepartmentCate.DataBind();
lblmessage.Text = "" + dt.Rows.Count.ToString() + "" + " " + "Results found for" + " '" + searchstring + "'";
for (int l = 0; l < pg.Count; l++)
{
rptDepartmentCate.Controls[l].Controls[3].Visible = true;
}
}
else
{
lblmessage.Text = "Your search '" + searchstring + "' did not match any article.";
}
}
else
{
lblmessage.Text = "Your search '" + searchstring + "' did not match any article.";
}
}
public void Prev_Click(Object sender, EventArgs e)
{
int pagenumber = 0;
if (!string.IsNullOrEmpty(Request.QueryString["Page"]))
pagenumber = Convert.ToInt32(Request.QueryString["Page"]) - 1;
if (Request.CurrentExecutionFilePath == "/EditorAndPublisher/SearchResult.aspx")
Response.Redirect(Request.CurrentExecutionFilePath + "?Page=" + pagenumber);

}

// Move to next page
public void Next_Click(Object sender, EventArgs e)
{
int pagenumber=1;
if(!string.IsNullOrEmpty(Request.QueryString["Page"]))
pagenumber=Convert.ToInt32(Request.QueryString["Page"])+1;
if (Request.CurrentExecutionFilePath == "/EditorAndPublisher/SearchResult.aspx")
Response.Redirect(Request.CurrentExecutionFilePath + "?Page=" + pagenumber);

}

No comments:

Post a Comment