1
<%@ Import Namespace="System.Data" %> <%--为了引入DataView--%>
2
<%@ Import Namespace="System.IO" %>
3
<%@ Import Namespace="System.Xml" %>
4
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
<script language="C#" runat="server">
6
static CacheItemRemovedReason reason;
7
new protected void Page_Load(object sender, EventArgs e)
8
{
9
if (!this.IsPostBack)
10
{
11
//加载数据的函数
12
LoadData();
13
}
14
}
15
private void LoadData()
16
{
17
DataView Source;
18
if (Cache["tempData"] == null)
19
{
20
DataSet ds = new DataSet();
21
string filePath = Server.MapPath("~/App_Data/Computer.Xml");
22
ds.ReadXml(filePath);
23
//下面两种传值数据源方法都可以使用
24
Source = ds.Tables[0].DefaultView;
25
//Source = new DataView(ds.Tables[0]);
26
//重点设置依赖缓存
27
CacheDependency dep = new CacheDependency(filePath, DateTime.Now);
28
//把缓存增加到内存中
29
Cache.Insert("tempData", Source, dep, DateTime.MaxValue, TimeSpan.Zero,
30
CacheItemPriority.Default, new CacheItemRemovedCallback(CacheChanged));
31
//如果缓存为空同时XML文件修改了
32
if (dep.HasChanged)
33
{
34
lbMessage.Text +=">>>>缓存对象被移除,原因是:" + reason.ToString() + "<br>";
35
}
36
lbMessage.Text += ">>>>显示XML文件<br>";
37
}
38
else
39
{
40
Source = (DataView)(Cache["tempData"]);
41
lbMessage.Text += "显示缓存中的数据<br>";
42
}
43
GridView1.DataSource = Source;
44
GridView1.DataBind();
45
}
46
//实现对XML文件的修改
47
private void UpdateXmlFile(object sender, EventArgs e)
48
{
49
//读取XML文件数据
50
DataSet ds = new DataSet();
51
string filePath = Server.MapPath("~/App_Data/Computer.Xml");
52
ds.ReadXml(filePath);
53
if (TextBox1.Text != "" && TextBox2.Text != "" && TextBox3.Text != "")
54
{
55
try
56
{
57
DataRow NewLine = ds.Tables[0].NewRow();
58
NewLine["Choice"] = TextBox1.Text;
59
NewLine["Price"] = TextBox2.Text;
60
NewLine["Url"] = Server.UrlDecode("<a href='"+TextBox3.Text+"'>"+TextBox3.Text+"'</a>");
61
//DataSet对象表的行集合里增加新的一行
62
ds.Tables[0].Rows.Add(NewLine);
63
}
64
catch
65
{
66
lbMessage.Text += ">>>>无法增加新数据<br>";
67
}
68
}
69
else
70
{
71
lbMessage.Text += ">>>><font color='red'size='5px'>文本框的内容必须填写</font><br>";
72
}
73
//通过新建和覆盖方法,将数据写入XML文件中,达到更新效果
74
FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
75
ds.WriteXml(fs);
76
fs.Close();
77
//当使用了监视函数CacheDependency缓存更改时
78
//会自动删除内存中的"tempData",但是这里重新调用了
79
//Cache.Remove("tempData");主要是为了调用委托CacheItemRemovedCallback
80
//中的方法CacheChanged来显示删除的原因
81
Cache.Remove("tempData");
82
LoadData();
83
}
84
//实现委托CacheItemRemovedCallback中的方法
85
private void CacheChanged(string Key, object Value, CacheItemRemovedReason removedReason)
86
{
87
reason = removedReason;
88
}
89
</script>
90
<html xmlns="http://www.w3.org/1999/xhtml" >
91
<head runat="server">
92
<title>无标题页</title>
93
</head>
94
<body>
95
<form id="form1" runat="server">
96
<div style="text-align: center"><fieldset style="text-align: center; width:50%">
97
<legend>自定义缓存依赖应用</legend>
98
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; height: 107%">
99
<tr>
100
<td align="center" style="width: 100%; height: 75%; text-align: center;" valign="top">
101
<asp:GridView ID="GridView1" runat="server" Width="100%" AutoGenerateColumns="False">
102
<Columns>
103
<asp:BoundField DataField="Choice" HeaderText="品牌" />
104
<asp:BoundField DataField="Price" HeaderText="价格" />
105
<asp:BoundField DataField="Url" HeaderText="网址" HtmlEncode="False" />
106
</Columns>
107
</asp:GridView>
108
</td>
109
</tr>
110
<tr>
111
<td align="center" style="width: 100%; height: 43px; text-align: center;" valign="top">
112
<asp:Label ID="Label1" runat="server" Text="Choice:" Width="48px"></asp:Label>
113
<asp:TextBox ID="TextBox1" runat="server" Width="88px"></asp:TextBox>
114
115
<asp:Label ID="Label2" runat="server" Text="Price:" Width="56px"></asp:Label>
116
<asp:TextBox ID="TextBox2" runat="server" Width="96px"></asp:TextBox>
117
118
<asp:Label ID="Label3" runat="server" Text="Url:" Width="56px"></asp:Label>
119
<asp:TextBox ID="TextBox3" runat="server" Width="88px"></asp:TextBox></td>
120
</tr>
121
<tr>
122
<td align="center" style="width: 100%; height: 37px; text-align: center;" valign="top">
123
<asp:Button ID="Button1" runat="server" Text="修改XML文件" OnClick="UpdateXmlFile"/></td>
124
</tr>
125
<tr>
126
<td align="center" style="width: 100%; height: 15px" valign="top">
127
<hr style="width: 568px" />
128
</td>
129
</tr>
130
<tr>
131
<td align="center" style="width: 100%; height: 19px;" valign="top">
132
<asp:Label ID="lbMessage" runat="server" Height="112px" Text="Label" Width="100%"></asp:Label></td>
133
</tr>
134
</table>
135
136
</fieldset>
137
</div>
138
</form>
139
</body>
140
</html>
141
<%@ Import Namespace="System.Data" %> <%--为了引入DataView--%>2
<%@ Import Namespace="System.IO" %>3
<%@ Import Namespace="System.Xml" %>4
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">5
<script language="C#" runat="server">6
static CacheItemRemovedReason reason;7
new protected void Page_Load(object sender, EventArgs e)8
{9
if (!this.IsPostBack)10
{ 11
//加载数据的函数12
LoadData();13
} 14
}15
private void LoadData()16
{17
DataView Source;18
if (Cache["tempData"] == null)19
{20
DataSet ds = new DataSet();21
string filePath = Server.MapPath("~/App_Data/Computer.Xml");22
ds.ReadXml(filePath);23
//下面两种传值数据源方法都可以使用24
Source = ds.Tables[0].DefaultView;25
//Source = new DataView(ds.Tables[0]);26
//重点设置依赖缓存27
CacheDependency dep = new CacheDependency(filePath, DateTime.Now);28
//把缓存增加到内存中29
Cache.Insert("tempData", Source, dep, DateTime.MaxValue, TimeSpan.Zero, 30
CacheItemPriority.Default, new CacheItemRemovedCallback(CacheChanged));31
//如果缓存为空同时XML文件修改了32
if (dep.HasChanged)33
{34
lbMessage.Text +=">>>>缓存对象被移除,原因是:" + reason.ToString() + "<br>";35
}36
lbMessage.Text += ">>>>显示XML文件<br>";37
}38
else39
{40
Source = (DataView)(Cache["tempData"]);41
lbMessage.Text += "显示缓存中的数据<br>";42
}43
GridView1.DataSource = Source;44
GridView1.DataBind();45
}46
//实现对XML文件的修改47
private void UpdateXmlFile(object sender, EventArgs e)48
{ 49
//读取XML文件数据50
DataSet ds = new DataSet();51
string filePath = Server.MapPath("~/App_Data/Computer.Xml");52
ds.ReadXml(filePath);53
if (TextBox1.Text != "" && TextBox2.Text != "" && TextBox3.Text != "")54
{55
try56
{57
DataRow NewLine = ds.Tables[0].NewRow();58
NewLine["Choice"] = TextBox1.Text;59
NewLine["Price"] = TextBox2.Text;60
NewLine["Url"] = Server.UrlDecode("<a href='"+TextBox3.Text+"'>"+TextBox3.Text+"'</a>");61
//DataSet对象表的行集合里增加新的一行62
ds.Tables[0].Rows.Add(NewLine);63
}64
catch65
{66
lbMessage.Text += ">>>>无法增加新数据<br>"; 67
}68
}69
else70
{71
lbMessage.Text += ">>>><font color='red'size='5px'>文本框的内容必须填写</font><br>";72
}73
//通过新建和覆盖方法,将数据写入XML文件中,达到更新效果74
FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);75
ds.WriteXml(fs);76
fs.Close();77
//当使用了监视函数CacheDependency缓存更改时78
//会自动删除内存中的"tempData",但是这里重新调用了79
//Cache.Remove("tempData");主要是为了调用委托CacheItemRemovedCallback80
//中的方法CacheChanged来显示删除的原因81
Cache.Remove("tempData");82
LoadData();83
}84
//实现委托CacheItemRemovedCallback中的方法85
private void CacheChanged(string Key, object Value, CacheItemRemovedReason removedReason)86
{87
reason = removedReason;88
}89
</script>90
<html xmlns="http://www.w3.org/1999/xhtml" >91
<head runat="server">92
<title>无标题页</title>93
</head>94
<body>95
<form id="form1" runat="server">96
<div style="text-align: center"><fieldset style="text-align: center; width:50%">97
<legend>自定义缓存依赖应用</legend>98
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; height: 107%">99
<tr>100
<td align="center" style="width: 100%; height: 75%; text-align: center;" valign="top">101
<asp:GridView ID="GridView1" runat="server" Width="100%" AutoGenerateColumns="False">102
<Columns>103
<asp:BoundField DataField="Choice" HeaderText="品牌" />104
<asp:BoundField DataField="Price" HeaderText="价格" />105
<asp:BoundField DataField="Url" HeaderText="网址" HtmlEncode="False" />106
</Columns>107
</asp:GridView>108
</td>109
</tr>110
<tr>111
<td align="center" style="width: 100%; height: 43px; text-align: center;" valign="top">112
<asp:Label ID="Label1" runat="server" Text="Choice:" Width="48px"></asp:Label>113
<asp:TextBox ID="TextBox1" runat="server" Width="88px"></asp:TextBox>114
115
<asp:Label ID="Label2" runat="server" Text="Price:" Width="56px"></asp:Label>116
<asp:TextBox ID="TextBox2" runat="server" Width="96px"></asp:TextBox>117
118
<asp:Label ID="Label3" runat="server" Text="Url:" Width="56px"></asp:Label>119
<asp:TextBox ID="TextBox3" runat="server" Width="88px"></asp:TextBox></td>120
</tr>121
<tr>122
<td align="center" style="width: 100%; height: 37px; text-align: center;" valign="top">123
<asp:Button ID="Button1" runat="server" Text="修改XML文件" OnClick="UpdateXmlFile"/></td>124
</tr>125
<tr>126
<td align="center" style="width: 100%; height: 15px" valign="top">127
<hr style="width: 568px" />128
</td>129
</tr>130
<tr>131
<td align="center" style="width: 100%; height: 19px;" valign="top">132
<asp:Label ID="lbMessage" runat="server" Height="112px" Text="Label" Width="100%"></asp:Label></td>133
</tr>134
</table>135
136
</fieldset>137
</div>138
</form>139
</body>140
</html>141


浙公网安备 33010602011771号