页面无限跳转间如何保存页面状态(2)

解决方法的实现
       以上分析过了之后,我们来看如何实现他:
       class DataInfo:这个类用于保存数据状态,一般而言,也就是每个 DataGrid对应一个:
[Serializable()]
     public class DataInfo
     {
         private string dataName;
         private Hashtable searchParams;
         private Hashtable otherParams;
         private int currentPage;
         private string sortExpression;
         private string itemID;
 
         public DataInfo(string dataName)
         {
              this.dataName = dataName;
         }
 
         /// <summary>
         /// 数据名
         /// </summary>
         public string DataName
         {
              get { return dataName; }
         }
         /// <summary>
         /// 查询参数
         /// </summary>
         public Hashtable SearchParams
         {
              get { return searchParams; }
              set { searchParams = value; }
         }
 
         /// <summary>
         /// 获取其他参数
         /// </summary>
         public Hashtable OtherParams
         {
              get { return otherParams; }
              set { otherParams = value; }
         }
 
         /// <summary>
         /// 获取当前页
         /// </summary>
         public int CurrentPage
         {
              get { return currentPage; }
              set { currentPage = value; }
         }
 
         /// <summary>
         ///获取排序方式
         /// </summary>
         public string SortExpression
         {
              get { return sortExpression ;}
              set { sortExpression = value; }
         }
 
         /// <summary>
         /// 获取要显示在当前页的项的ID
         /// </summary>
         public string ItemID
         {
              get { return itemID; }
              set { itemID = value; }
         }
     }
 
class DataInfoList:这个类包装承载 DataInfo的动态数组,限定数组输入输出的数据类型
[Serializable()]
     public class DataInfoList
     {
         private ArrayList dataInfoList = new ArrayList();
 
         public DataInfo this[int index]
         {
              get
              {
                   return (DataInfo)dataInfoList[index];
              }
              set
              {
                   if (((DataInfo)dataInfoList[index]).DataName == value.DataName || this[value.DataName] == null)
                   {
                       dataInfoList[index] = value;
                   }
                   else
                   {
                       throw new Exception("There have a DataInfo used this Name yet!");
                   }
              }
         }
 
         public DataInfo this[string dataName]
         {
              get
              {
                   for (int i = 0; i < dataInfoList.Count; i++)
                   {
                       if (this[i].DataName == dataName)
                       {
                            return this[i];
                       }
                   }
                   return null;
              }
              set
              {
                   for (int i = 0; i < dataInfoList.Count; i++)
                   {
                       if (this[i].DataName == dataName)
                       {
                            this[i] = value;
                            return;
                       }
                   }
                   this.Add(value);
              }
         }
 
         public void Remove(DataInfo value)
         {
              dataInfoList.Remove(value);
         }
 
         public void Remove(string dataName)
         {
              DataInfo dataInfo = this[dataName];
              if (dataInfo != null)
              {
                   dataInfoList.Remove(dataInfo);
              }
         }
 
         public bool Contains(DataInfo value)
         {
              return dataInfoList.Contains(value);
         }
 
         public bool Contains(string dataName)
         {
              DataInfo datainfo = this[dataName];
              if (datainfo != null)
              {
                   return true;
              }
              return false;
         }
 
         public void Clear()
         {
              dataInfoList.Clear();
         }
 
         public int Add(DataInfo value)
         {
              if (this[value.DataName] == null)
              {
                   return dataInfoList.Add(value);
              }
              else
              {
                   throw new Exception("There have a DataInfo used this Name yet!");
              }
         }
 
         public int Count
         {
              get
              {
                   return dataInfoList.Count;
              }
         }
     }
 
interface IPageInfo:这个接口用在页面中,以实现页面间的数据通信。
public interface IPageInfo
     {
         /// <summary>
         /// 页面名
         /// </summary>
         string PageName
         {
              get;
         }
         /// <summary>
         /// 获取数据信息
         /// </summary>
         DataInfoList DataInfos
         {
              get;
         }
        
         /// <summary>
         /// 获取其他参数
         /// </summary>
         Hashtable OtherParams
         {
              get;
         }
     }

 

(未完待续)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值