Solved

HistoryPoint doesn't work after hyperlink clicked and come back with ListView sorted

Posted on 2008-09-29
1
513 Views
Last Modified: 2013-11-08
Hi, I have a ListView putted inside UpdatePanel which can be sorted and paged. HistoryPoint works only in the page itself, but once I clicked the link in the row of the ListView to go to a different page and come back, the last history point is not the point I left. I inserted the code AddHistoryPoint to LinkButton_dClicke event method so that once the link was clicked, the history point is created with the page number and sorted column name and sort method(ascending or desending). But when I come back to the ListView from the detail page, it doesn't show  the list that I left. Here are the codes;


private void AddHisotryPointAmount(string sortExpression, SortDirection sortDirection)
    {
        if (ScriptManager1.IsInAsyncPostBack && !ScriptManager1.IsNavigating)
        {
            string v = string.Empty;
            if (sortDirection == SortDirection.Ascending)
                v = "ASC:" + sortExpression;
            else
                v = "DES:" + sortExpression;
 
            v += "PAGENUM:" + DataPager1.StartRowIndex;
            ScriptManager1.AddHistoryPoint("A", v);
        }
    }
 
 
    protected void ScriptManager1_Navigate(object sender, HistoryEventArgs e)
    {
        int cState = e.State.Keys.Count;
        if (cState < 1)
        {
            //the list is in initial state. never sorted or paged. 
        }
        else
        {
           // string lastStateKey = e.State.Keys[cState-1];
            //string lastStateValue = e.State[lastStateKey];
            string lastStateKey = e.State.Keys[0];
            string lastStateValue = e.State[0];
 
            if (lastStateKey == "P")
            {
                int pageNum = Int32.Parse(lastStateValue);
                DataPager1.SetPageProperties(pageNum, DataPager1.PageSize, true);
            }
            else if (lastStateKey == "S")
            {
                string sortExpression = string.Empty;
                if (lastStateValue.IndexOf("ASC:") > -1)
                {
                    sortExpression = lastStateValue.Substring(lastStateValue.IndexOf("ASC:") + 4);
                    ListView1.Sort(sortExpression, SortDirection.Ascending);
                }
                else if (lastStateValue.IndexOf("DES:") > -1)
                {
                    sortExpression = lastStateValue.Substring(lastStateValue.IndexOf("DES:") + 4);
                    ListView1.Sort(sortExpression, SortDirection.Descending);
                }
            }
            else if (lastStateKey == "A")
            {
                string sortExpression = string.Empty;
                if (lastStateValue.IndexOf("ASC:") > -1)
                {
                    sortExpression = lastStateValue.Substring(lastStateValue.IndexOf("ASC:") + 4, lastStateValue.IndexOf("PAGENUM:")-(lastStateValue.IndexOf("ASC:") + 4));
                    ListView1.Sort(sortExpression, SortDirection.Ascending);
                }
                else if (lastStateValue.IndexOf("DES:") > -1)
                {
                    sortExpression = lastStateValue.Substring(lastStateValue.IndexOf("DES:") + 4, lastStateValue.IndexOf("PAGENUM:") - (lastStateValue.IndexOf("DES:") + 4));
                    ListView1.Sort(sortExpression, SortDirection.Descending);
                }
                int pageNum = Int32.Parse(lastStateValue.Substring(lastStateValue.IndexOf("PAGENUM:")+8));
                DataPager1.SetPageProperties(pageNum, DataPager1.PageSize, true);
            }
            else { }
            
        }
        
    }
 
 
 
protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)
    {
        try
        {
            LinkButton lnkTotalCondidate = (LinkButton)e.CommandSource;
            LinkButton lnkTotal = (LinkButton)e.Item.FindControl("lnkTotal");
 
            if (lnkTotalCondidate.ID == lnkTotal.ID)
            {
                AddHisotryPointAmount(ListView1.SortExpression,ListView1.SortDirection);
                Response.Redirect("SingleReceipt.aspx?ResNo=" + lnkTotal.Attributes["ResNo"]);
            }
        }
        catch (Exception ex)
        {
            ;
        }
        
    }

Open in new window

0
Comment
Question by:crcsupport
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
1 Comment
 
LVL 1

Accepted Solution

by:
crcsupport earned 0 total points
ID: 22602946
I solved the problem. I had to insert historypoint for both paging and sorting everytime no matter what action(paging, sorting, leaving the page to another page).  I like AJAX how they work with no flash, but sometimes it's very headache to find bug when coding.
0

Featured Post

Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction HyperText Transfer Protocol (http://www.ietf.org/rfc/rfc2616.txt) or "HTTP" is the underpinning of internet communication.  As a teacher of web development I have heard many questions, mostly from my younger students who have come to t…
OverviewThis article demonstrates a simple search form using AJAX. The purpose of the article is to demonstrate how to use the same code to render a page and javascript (JQuery) and AJAX to make subsequent calls to refine the results. The princip…

734 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question