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                    &nbsp; &nbsp; &nbsp; &nbsp;
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                    &nbsp; &nbsp;&nbsp; &nbsp;
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
posted on 2006-12-27 21:57  小角色  阅读(700)  评论(0)    收藏  举报