上一篇:页面无限跳转间如何保存页面状态 (3) >>
页面无限跳转间如何保存页面状态(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;
}
}
(未完待续)
下一篇:页面无限跳转间如何保存页面状态(1) >>
相关文章:
- · 十天学会ASP.net之第三天
- · 十天学会ASP.net之第二天
- · 十天学会ASP.net之第一天
- · 图片上传到数据库并显示(C#+Access)
- · 关于ASPNET在IIS一些问题的经验总结
- · 认识Whidbey
- · 15秒:为ASP.NET应用缓存Oracle数据
- · 用ASP.Net写一个发送ICQ信息的程序
- · ASP.NET 开发聊天室程序(英文)
- · asp.net高级教程(续)
- · asp.net高级教程
- · ASP+与ASP有什么不同
- · NET 简介、Hello World 和 .NET Runtime 一瞥
- · ASP.NET 入门的五个步骤
- · 深入讲解 ASP+ 验证
- · ASP.NET Pre-Compilation and Keep-Alive
- · 动态创建DataGrid的模版列
- · 让Asp.Net输出图形
- · 文件下载的权限控制(asp.net)
- · 大数据量下的分页
- · 从 .NET 程序集提供图像(二)
- · 从 .NET 程序集提供图像(一)
- · 用ASP.NET设计优秀系统(一)
- · Henry手记 - Datagrid键盘事件响应(二)
- · Henry手记 - Datagrid键盘事件响应(一)
- · 在ASP.NET下实现数字和字符相混合的验证码(C# Code)
- · 在ASP.NET下实现数字和字符相混合的验证码(vb.net Code)
- · 大数据量下的分页
- · 让Asp.NET的DataGrid可排序、可选择、可分页
- · 利用ASP.NET DataGrid显示主次关系的数据
- · 如何使用PagedDataSource來做DataRepeater的分頁的效果
- · ASP .NET 中的身份验证:.NET 安全性指导
- · 在Asp.Net中从sqlserver检索(retrieve)图片
- · 如何在ASP.Net 中把图片存入数据库
- · 在两个ASP.NET页面之间传递值
- · 用ASP.NET构建完整E-mail发送系统
- · 用ASP.NET开发Web服务的五则技巧
- · 在两个ASP.NET页面之间传递值
