浏览器大全:是一个提供流行浏览器教程、在线学习分享的学习平台!

页面无限跳转间如何保存页面状态(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;
}
}




相关软件

2345加速浏览器官方版

2345加速浏览器官方版 | 56.2MB

2345加速浏览器官方版

新一代2345加速浏览器采用Chromium和IE双内核,主打极速与安全特性。基于Chromium深度定制,引入网页智能预加载技术,访问网页更快速..

QQ浏览器官方正式版

QQ浏览器官方正式版 | 49.67MB

QQ浏览器官方正式版

QQ浏览器秉承TT浏览器1-4系列方便易用的特点,但技术架构不同,交互和视觉表现也重新设计,采用Chromium内核+IE双内核,让浏览快速稳定...

百度浏览器最新版下载

百度浏览器最新版下载 | 13.3MB

百度浏览器最新版下载

q百度浏览器,是一款简洁轻快、智能懂你的浏览器。依靠百度强大的搜索平台,在满足用户浏览网页的基础上,它整合百度体系业务优势,带给用户更方便的浏览方式功能...

UC浏览器官方正式版

UC浏览器官方正式版 | 44.2MB

UC浏览器官方正式版

UC浏览器(UC Browser)是UC Mobile Limited在2004年8月开发的一款软件,分uc手机浏览器和uc浏览器电脑版。UC浏览器是全球使用量最大的第三方手机浏览器...

猎豹浏览器2022最新版下载

猎豹浏览器2022下载 | 45MB

猎豹浏览器2022最新版下载

猎豹安全浏览器对Chrome的Webkit内核进行了超过100项的技术优化,访问网页速度更快。其具有首创的智能切换引擎,动态选择内核匹配不同网页...

360安全浏览器官方版下载

360安全浏览器下载 | 21.4MB

360安全浏览器官方版下载

360安全浏览器拥有全国最大的恶意网址库,采用恶意网址拦截技术,可自动拦截挂马、欺诈、网银仿冒等恶意网址。独创沙箱技术,在隔离模式即使访问****也不会感染...