using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.Caching;          // Wymagane dla CacheDependency.
using System.Xml;                  // Wymagane do pracy z Xml.

public partial class _Default : System.Web.UI.Page
{
   protected void Page_Load(object sender, EventArgs e)
   {
      CreateGridView();
   }

   private void CreateGridView()
   {
      DataSet dsGrid;
      dsGrid = (DataSet)Cache["GridViewDataSet"];
      if (dsGrid == null)
      {
         dsGrid = GetDataSet();
         string[] fileDependsArray = {Server.MapPath("Northwind.xml")};
         string[] cacheDependsArray = {"Depend0", "Depend1", "Depend2"};
         CacheDependency cacheDepends = new CacheDependency
            (fileDependsArray, cacheDependsArray);
         Cache.Insert("GridViewDataSet", dsGrid, cacheDepends);
         lblMessage.Text = "Dane z pliku XML.";
      }
      else
      {
         lblMessage.Text = "Dane z bufora.";
      }

      gv.DataSource = dsGrid.Tables[0];
      gv.DataBind();
   }

   private DataSet GetDataSet()
   {
      DataSet dsData = new DataSet();
      XmlDataDocument doc = new XmlDataDocument();
      doc.DataSet.ReadXml(Server.MapPath("Northwind.xml"));
      dsData = doc.DataSet;
      return dsData;
   }

   protected void btnClear_Click(object sender, EventArgs e)
   {
      Cache.Remove("GridViewDataSet");
      CreateGridView();
   }

   protected void btnInit_Click(object sender, EventArgs e)
   {
      // Inicjalizacja buforw uzaleniajcych.
      Cache["Depend0"] = "To jest pierwsza zaleno.";
      Cache["Depend1"] = "To jest druga zaleno.";
      Cache["Depend2"] = "To jest trzecia zaleno.";
   }

   protected void btnKey0_Click(object sender, EventArgs e)
   {
      Cache["Depend0"] = "To jest zmieniona pierwsza zaleno.";
   }
}
