静态的空件序列化成XML格式后,用ViewState对象保存[原创]
//原创:西湖浪子
//时间:2006-10-1
//描述:把一个静态的空件,序列化成XML格式后,用ViewState对象保存
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Xml;
namespace WebTest
{
/// <summary>
/// TestHtmlTable 的摘要说明。
/// </summary>
public class TestHtmlTable : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
private HtmlTable htmltable
{
get
{
if(ViewState["table"]!=null )
{
return DeserializeHtmltable(ViewState["table"].ToString());
}
else
{
return buildhtmltable();
}
}
set
{
ViewState["table"]=serializeHtmltable(value);
}
}
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!this.IsPostBack)
{
HtmlTable _tbl=htmltable;
this.Controls.Add(_tbl);
}
}
private HtmlTable buildhtmltable()
{
HtmlTable tbl;
tbl =new HtmlTable();
int i=0;
int j = 5;
int k = 0;
for(i=0;i<j;i++)
{
HtmlTableRow row = new HtmlTableRow();
for(k=0; k<j;k++)
{
HtmlTableCell cell=new HtmlTableCell();
cell.InnerHtml = "Cell"+ i.ToString()+","+k.ToString();
row.Cells.Add(cell);
}
tbl.Rows.Add(row);
}
return tbl;
}
private HtmlTable addrowfortable(HtmlTable _tbl)
{
HtmlTable tbl;
tbl =new HtmlTable();
tbl=_tbl;
int i=0;
int j = 5;
int k = 0;
for(i=0;i<j;i++)
{
HtmlTableRow row = new HtmlTableRow();
for(k=0; k<j;k++)
{
HtmlTableCell cell=new HtmlTableCell();
cell.InnerHtml = "Cell"+ i.ToString()+","+k.ToString();
row.Cells.Add(cell);
}
tbl.Rows.Add(row);
}
return tbl;
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
public string serializeHtmltable(HtmlTable _table)
{
System.Xml.XmlDocument doc = new XmlDocument();
doc.LoadXml("<Jackhtmltable></Jackhtmltable>");
foreach(HtmlTableRow _row in _table.Rows)
{
System.Xml.XmlElement _event =doc.CreateElement("Row");
foreach(HtmlTableCell _cell in _row.Cells)
{
System.Xml.XmlElement _childevent=doc.CreateElement("Row");
_childevent.InnerText = _cell.InnerHtml;
_event.AppendChild(_childevent);
}
doc.DocumentElement.AppendChild(_event);
}
return doc.InnerXml;
}
public HtmlTable DeserializeHtmltable(string _xmltable)
{
System.Xml.XmlDocument doc = new XmlDocument();
doc.LoadXml(_xmltable);
HtmlTable _tbl=new HtmlTable();
foreach(XmlNode rownode in doc.GetElementsByTagName("Jackhtmltable").Item(0).ChildNodes)
{
HtmlTableRow row = new HtmlTableRow();
foreach(XmlNode cellnode in rownode.ChildNodes)
{
HtmlTableCell cell = new HtmlTableCell();
cell.InnerHtml= cellnode.InnerText;
row.Cells.Add(cell);
}
_tbl.Rows.Add(row);
}
return _tbl;
}
private void Button1_Click(object sender, System.EventArgs e)
{
HtmlTable tbl = new HtmlTable();
tbl= htmltable;
tbl=addrowfortable(tbl);
htmltable=tbl;
this.Controls.Add(tbl);
}
}
}
浙公网安备 33010602011771号