Aracılığıyla paylaş


XmlDataSource.Save Yöntem

Tanım

Özellik ayarlandıysa, denetim tarafından XmlDataSource bellekte tutulan XML verilerini diske DataFile kaydeder.

public:
 void Save();
public void Save();
member this.Save : unit -> unit
Public Sub Save ()

Özel durumlar

XML verileri özelliği yerine DataFile özelliği kullanılarak Data yüklendi.

-veya-

Özellik için DataFile bir URL belirtilir; ancak denetimin XmlDataSource Web kaynağı için doğru izinleri yoktur.

Özellik için DataFile bir URL belirtilir; ancak HTTP tabanlı bir URL değildir.

-veya-

Tasarım zamanı göreli yolu, denetimi kullanmadan XmlDataSource önce tasarımcı tarafından doğru eşlenmedi.

Özellik için DataFile belirtilen yola erişim reddedildi.

Örnekler

Bu bölüm iki kod örneği içerir. İlk kod örneğinde, bir XmlDataSource XML dosyasındaki XML verilerini görüntülemek ve düzenlemek için denetimle birlikte TreeView denetimin nasıl kullanılacağı gösterilmektedir. İkinci kod örneği, bir XmlDataSource XML dosyasındaki XML verilerini görüntülemek ve düzenlemek için şablonlu Repeater denetimle bir denetimin nasıl kullanılacağını gösterir.

Aşağıdaki kod örneğinde, bir XmlDataSource XML dosyasındaki XML verilerini görüntülemek ve düzenlemek için denetimle TreeView birlikte denetimin nasıl kullanılacağı gösterilmektedir. Veriler, her düğüm seçtiğinizde TreeView yöntemi kullanılarak GetXmlDocument bellekte değiştirilir ve ardından XML dosyasına kaydedilir. Son olarak, DataBind denetiminde TreeView görüntülenen verileri yenilemek için çağrılır.

<%@ Page LANGUAGE="C#" SMARTNAVIGATION="false" %>
<%@ Import Namespace="System.Xml" %>

<script runat="server" >
  void TreeView1_SelectedNodeChanged(Object sender, EventArgs e)
  {
    XmlDocument myXml = new XmlDocument();
    myXml=(XmlDocument)XmlSource.GetXmlDocument();

    String iterator = TreeView1.SelectedNode.DataPath;

    XmlNode myNode = myXml.SelectSingleNode(iterator);

    myNode.InnerText = "ThisIsATest";
    XmlSource.Save();
    TreeView1.DataBind();
    TreeView1.ExpandAll();
  }
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server">

      <asp:xmldatasource
        runat="server"
        id="XmlSource"
        xpath="/bookstore/book"
        datafile="Booksort.xml"
        enableviewstate="False"
        enablecaching="False" />

      <asp:treeview
        runat="server"
        id="TreeView1"
        ExpandDepth="3"
        datasourceid="XmlSource"
        maxdatabinddepth="3"
        autogeneratedatabindings="False"
        onselectednodechanged="TreeView1_SelectedNodeChanged" >
        <databindings>
          <asp:treenodebinding datamember="book" valuefield="publicationdate" />
          <asp:treenodebinding datamember="title" valuefield="#InnerText" />
          <asp:treenodebinding datamember="author" valuefield="#InnerText" />
          <asp:treenodebinding datamember="first-name" valuefield="#InnerText" />
          <asp:treenodebinding datamember="last-name" valuefield="#InnerText" />
        </databindings>
      </asp:treeview>
    </form>
  </body>
</html>
<%@ Page LANGUAGE="VB" SMARTNAVIGATION="false" %>
<%@ Import Namespace="System.Xml" %>

<script runat="server" >
  Private Sub TreeView1_SelectedNodeChanged(sender As Object, e As EventArgs)

    Dim myXml As New XmlDocument
    myXml = CType(XmlSource.GetXmlDocument(), XmlDataDocument)

    Dim iterator As String = TreeView1.SelectedNode.DataPath
    Dim myNode As XmlNode = myXml.SelectSingleNode(iterator)

    myNode.InnerText = "ThisIsATest"
    XmlSource.Save()
    TreeView1.DataBind()
    TreeView1.ExpandAll()
  End Sub ' TreeView1_SelectedNodeChanged
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server">

      <asp:xmldatasource
        runat="server"
        id="XmlSource"
        xpath="/bookstore/book"
        datafile="Booksort.xml"
        enableviewstate="False"
        enablecaching="False" />

      <asp:treeview
        runat="server"
        id="TreeView1"
        ExpandDepth="3"
        datasourceid="XmlSource"
        maxdatabinddepth="3"
        autogeneratedatabindings="False"
        onselectednodechanged="TreeView1_SelectedNodeChanged" >
        <databindings>
          <asp:treenodebinding datamember="book" valuefield="publicationdate" />
          <asp:treenodebinding datamember="title" valuefield="#InnerText" />
          <asp:treenodebinding datamember="author" valuefield="#InnerText" />
          <asp:treenodebinding datamember="first-name" valuefield="#InnerText" />
          <asp:treenodebinding datamember="last-name" valuefield="#InnerText" />
        </databindings>
      </asp:treeview>
    </form>
  </body>
</html>

Aşağıdaki kod örneği, bir XmlDataSource XML dosyasındaki XML verilerini görüntülemek ve düzenlemek için bir denetimi şablonlu Repeater denetimle nasıl kullanacağınızı gösterir. Önceki örnekte olduğu gibi, veriler yöntemi tarafından alınan nesnesi kullanılarak XmlDataDocument bellekte GetXmlDocument değiştirilir. Son olarak, DataBind denetiminde TreeView görüntülenen verileri yenilemek için çağrılır.

<%@ Page LANGUAGE="C#" SMARTNAVIGATION="false" %>
<%@ Import NameSpace="System.Xml" %>
<script runat="server" >

  void Button1_Click(Object sender, EventArgs e)
  {
    XmlDocument myXml = new XmlDocument();
    myXml=(XmlDocument)XmlSource.GetXmlDocument();

    String path = "bookstore/book/@publicationdate";
    XmlNodeList nodeList;
    nodeList = myXml.SelectNodes(path);
    foreach (XmlNode date in nodeList)
      {
        int helper = int.Parse(date.Value) + 2;
        date.Value = helper.ToString();
      }
    XmlSource.Save();
    Repeater1.DataBind();
  }

</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server" >

      <asp:XmlDataSource
        runat="server"
        ID="XmlSource"
        XPath="bookstore/book[@genre='novel']"
        DataFile="Booksort2.xml"
        EnableViewState="True"
        EnableCaching="False" />

      <asp:Repeater
        runat="server"
        ID="Repeater1"
        DataSourceID="XmlSource" >
          <ItemTemplate >
            <h1><%# XPath ("title/text()") %> </h1>
              <b>Author:</b><%# XPath ("author/first-name/text()") %> <%# XPath ("author/last-name/text()") %>
              <b>PublicationDate:</b><%# XPath ("@publicationdate") %>
              <b>Price:</b><%# XPath ("price/text()") %>
          </ItemTemplate>
      </asp:Repeater>


      <p><asp:Button
        runat="server"
        ID="Button1"
        onclick="Button1_Click"
        Text="Add 2 years to the Publication Date!" /></p>
</form>
</body>
</html>
<%@ Page LANGUAGE="VB" SMARTNAVIGATION="false" %>
<%@ Import Namespace="System.Xml" %>

<script runat="server" >

  Private Sub Button1_Click(sender As Object, e As EventArgs)

    Dim myXml As New XmlDocument
    myXml = CType(XmlSource.GetXmlDocument(), XmlDocument)

    Dim path As String = "bookstore/book/@publicationdate"
    Dim nodeList As XmlNodeList = myXml.SelectNodes(path)

    Dim aDate As XmlNode
    For Each aDate In  nodeList
      Dim helper As Integer = Int32.Parse(aDate.Value) + 2
      aDate.Value = helper.ToString()
    Next aDate

    XmlSource.Save()
    Repeater1.DataBind()

  End Sub 'Button1_Click
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server" >

      <asp:XmlDataSource
        runat="server"
        ID="XmlSource"
        XPath="bookstore/book[@genre='novel']"
        DataFile="Booksort2.xml"
        EnableViewState="True"
        EnableCaching="False" />

      <asp:Repeater
        runat="server"
        ID="Repeater1"
        DataSourceID="XmlSource" >
          <ItemTemplate >
            <h1><%# XPath ("title/text()") %> </h1>
              <b>Author:</b><%# XPath ("author/first-name/text()") %> <%# XPath ("author/last-name/text()") %>
              <b>PublicationDate:</b><%# XPath ("@publicationdate") %>
              <b>Price:</b><%# XPath ("price/text()") %>
          </ItemTemplate>
      </asp:Repeater>


      <p><asp:Button
        runat="server"
        ID="Button1"
        onclick="Button1_Click"
        Text="Add 2 years to the Publication Date!" /></p>
</form>
</body>
</html>

Kod örneklerindeki XML dosyasında aşağıdaki veriler vardır:

<?xml version="1.0" encoding="utf-8"?>
 <bookstore xmlns:bk="urn:samples">
   <book genre="novel" publicationdate="1999" bk:ISBN="0000000000">
     <title>Secrets of Silicon Valley</title>
     <author>
       <first-name>Sheryl</first-name>
       <last-name>Hunter</last-name>
     </author>
     <price>24.95</price>"
     </book>
   <book genre="novel" publicationdate="1985" bk:ISBN="1111111111">
     <title>Straight Talk About Computers</title>
     <author>
       <first-name>Dean</first-name>
       <last-name>Straight</last-name>
     </author>
     <price>29.95</price>
   </book>
</bookstore>

Açıklamalar

XmlDataSource Denetim genellikle salt okunur veri bağlama senaryolarında kullanılırken, temel alınan XML veri dosyasındaki XmlDataSource XML verilerini düzenlemek için denetimini kullanabilirsiniz. Bu senaryolarda, XML verileri denetim tarafından bir XML dosyasından XmlDataSource yüklenir. yöntemini kullanarak GetXmlDocument bellekte öğesini değiştirir XmlDataDocument ve ardından yöntemini çağırarak Save XML veri dosyasına kaydedersiniz. Bu düzenlenebilir XML senaryosu, aşağıdaki koşullar karşılandığında mümkündür:

  • XML verileri özelliği tarafından belirtilen bir XML dosyasından DataFile yüklenir, özelliğinde Data belirtilen satır içi XML verilerinden yüklenmez.

  • veya TransformFile özelliklerinde Transform XSLT dönüşümü belirtilmedi.

yöntemi, Save farklı istekler tarafından yapılan eşzamanlı kaydetme işlemlerini işlemez. Bir XML dosyasını denetim aracılığıyla XmlDataSource birden fazla kullanıcı düzenliyorsa, tüm kullanıcıların aynı verilerle çalıştığının garantisi yoktur. Aynı eşzamanlılık sorunları nedeniyle bir Save işlemin başarısız olması da mümkündür.

Şunlara uygulanır

Ayrıca bkz.