代码改变世界

关于浏览器后退时保存数据、

2010-03-17 08:58  北冥有魚,其名為坤、  阅读(1036)  评论(0编辑  收藏  举报
浏览器后退方法history.go(-1);和history.back()都可以将浏览器后退一个页面,可是如果要像百度做的那样返回时还要保持原来
所有的状态,也就是说,后退时保持原页面的所有数据,比如文本框,下拉框的值的话.那用这两个方法貌似是行不通的了.这两天写了个
session保存并取出数据的方法.如下:
首先是PageLoad里面的代码:
代码
            if (string.IsNullOrEmpty(Request["save"]))
                {
                    
//如果重新進入會員維護,則會員維護各界面的過濾條件設置為空
                    Dictionary<stringstring> dt = new Dictionary<stringstring>();
                    
if (Session["MAH001_Status"!= null)
                        dt 
= Session["MAH001_Status"as Dictionary<stringstring>;

                    dt[
"MAH001"= "";
                    Session[
"MAH001_Status"= dt;
                }
                
else
                {
                    
string[] arrCond = GetFormCondition();
                    
int idx = 0;
                    
if (arrCond.Length == 0)
                        idx 
= 0;
                    
else if (!int.TryParse(arrCond[0], out idx))
                        idx 
= 0;

                    GridViewVip.PageIndex 
= idx;

                    txtName.Text 
= arrCond[1];
                    ddlSex.SelectedValue 
= arrCond[2];
                    ddlMarried.SelectedValue 
= arrCond[3];
                    
//UCCity1.CountyValue = arrCond[4];
                    
//UCCity1.CityValue = arrCond[5];
                    ddlStatus.SelectedValue = arrCond[6];
                    txtBCreateDate.Text 
= arrCond[7];
                    txtECreateDate.Text 
= arrCond[8];
                }

以下是保存session和取出session分割的方法:

代码
/// <summary>
        
/// 獲取保存在Session中的當前書面的過濾條件
        
/// </summary>
        
/// <returns>MAH001.aspx書面的過濾條件數組</returns>
        public string[] GetFormCondition()
        {
            
string[] arrPart = new string[0];

            
object obj = Session["MAH001_Status"];
            
if (obj != null)
            {
                Dictionary
<stringstring> dt = obj as Dictionary<stringstring>;
                
if (dt.ContainsKey("MAH001"))
                {
                    
string strCond = dt["MAH001"];
                    arrPart 
= strCond.Split("|".ToCharArray());
                    
for (int i = 0; i < arrPart.Length; i++)
                        arrPart[i] 
= arrPart[i].Trim();
                }
            }

            
return arrPart;
        }

        
/// <summary>
        
///  將當前書面的過濾條件存入Session
        
/// </summary>
        public void SetFormCondition()
        {
            
string strST_01 = string.Format("{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}", GridViewVip.PageIndex,
                                                                               txtName.Text,
                                                                               ddlSex.SelectedValue,
                                                                               ddlMarried.SelectedValue,
                                                                               UCCity1.CountyValue,
                                                                               UCCity1.CityValue,
                                                                               ddlStatus.SelectedValue,
                                                                               txtBCreateDate.Text,
                                                                               txtECreateDate.Text
                                                                               );

            Dictionary
<stringstring> dt = new Dictionary<stringstring>();
            
if (Session["MAH001_Status"!= null)
                dt 
= Session["MAH001_Status"as Dictionary<stringstring>;

            dt[
"MAH001"= strST_01;

            Session[
"MAH001_Status"= dt;
        }