XmlDataSource.OnTransforming(EventArgs) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Transforming Menaikkan peristiwa sebelum XmlDataSource kontrol melakukan transformasi XSLT pada data XML-nya.
protected:
virtual void OnTransforming(EventArgs ^ e);
protected virtual void OnTransforming (EventArgs e);
abstract member OnTransforming : EventArgs -> unit
override this.OnTransforming : EventArgs -> unit
Protected Overridable Sub OnTransforming (e As EventArgs)
Parameter
Contoh
Contoh kode berikut menunjukkan cara menggunakan XmlDataSource kontrol dengan kontrol untuk menampilkan data XML yang TreeView diubah. Transformasi XML dilakukan menggunakan lembar gaya yang ditunjukkan oleh TransformFile properti . Selain itu, lembar gaya menggunakan argumen transformasi yang diteruskan ke kontrol sumber data dalam XsltArgumentList objek saat runtime. Contoh kode menunjukkan cara meneruskan XsltArgumentList objek ke kontrol sumber data dengan menangani Transforming peristiwa dengan penanganan aktivitas kustom, yang diidentifikasi berdasarkan nama metode yang ditetapkan untuk metode .OnTransforming
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private void TransformEventHandler(object sender, EventArgs e) {
// Add a dynamic transformation argument.
DateTime d = new DateTime();
d = DateTime.Now.AddDays(20);
// Create an XsltArgumentList.
XsltArgumentList xslArg = new XsltArgumentList();
xslArg.AddParam("purchdate", "", d.ToShortDateString());
((XmlDataSource) sender).TransformArgumentList = xslArg;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<asp:XmlDataSource
id="XmlDataSource1"
runat="server"
datafile="bookstore.xml"
transformfile="bookswithdiscount.xsl"
ontransforming="TransformEventHandler" />
<!- TreeView uses hierachical data, so the
XmlDataSource uses an XmlHierarchicalDataSourceView
when a TreeView is bound to it. -->
<asp:treeview
id="TreeView1"
runat="server"
datasourceid="XmlDataSource1">
<databindings>
<asp:treenodebinding Depth="1" datamember="genre"
textfield="name" valuefield="name"/>
<asp:treenodebinding depth="2" datamember="book"
textfield="title" valuefield="title"/>
<asp:treenodebinding depth="3" datamember="chapter"
textfield="name" valuefield="num"/>
</databindings>
</asp:treeview>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<script runat="server">
Private Sub TransformEventHandler(sender As Object, e as EventArgs)
' Add a dynamic transformation argument.
Dim d As New DateTime
d = DateTime.Now.AddDays(20)
'Create an XsltArgumentList.
Dim xslArg As XsltArgumentList = New XsltArgumentList
xslArg.AddParam("purchdate", "", d.ToShortDateString())
Dim aXmlDataSource as XmlDataSource = CType(sender, XmlDataSource)
aXmlDataSource.TransformArgumentList = xslArg
End Sub ' TransformEventHandler
</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 runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<asp:xmldatasource
id="XmlDataSource1"
runat="server"
datafile="bookstore.xml"
transformfile="bookswithdiscount.xsl"
ontransforming="TransformEventHandler" />
<!- TreeView uses hierachical data, so the
XmlDataSource uses an XmlHierarchicalDataSourceView
when a TreeView is bound to it. -->
<asp:treeview
id="TreeView1"
runat="server"
datasourceid="XmlDataSource1">
<databindings>
<asp:treenodebinding depth="1" datamember="genre"
textfield="name" valuefield="name"/>
<asp:treenodebinding depth="2" datamember="book"
textfield="title" valuefield="title"/>
<asp:treenodebinding depth="3" datamember="chapter"
textfield="name" valuefield="num"/>
</databindings>
</asp:treeview>
</form>
</body>
</html>
File XML dalam contoh kode memiliki data berikut:
<bookstore>
<genre name="fiction">
<book ISBN="0000000000">
<title>Secrets of Silicon Valley</title>
<price>12.95</price>
<chapters>
<chapter num="1" name="Introduction" />
<chapter num="2" name="Body" />
<chapter num="3" name="Conclusion" />
</chapters>
</book>
</genre>
<genre name="novel">
<book genre="novel" ISBN="1111111111">
<title>Straight Talk About Computers</title>
<price>24.95</price>
<chapters>
<chapter num="1" name="Introduction" />
<chapter num="2" name="Body" />
<chapter num="3" name="Conclusion" />
</chapters>
</book>
</genre>
</bookstore>
Transformasi XML dilakukan menggunakan lembar gaya berikut.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="purchdate"/>
<xsl:template match="bookstore">
<bookstore>
<xsl:apply-templates select="genre"/>
</bookstore>
</xsl:template>
<xsl:template match="genre">
<genre>
<xsl:attribute name="name">
<xsl:value-of select="@name"/>
</xsl:attribute>
<xsl:apply-templates select="book"/>
</genre>
</xsl:template>
<xsl:template match="book">
<book>
<xsl:attribute name="ISBN">
<xsl:value-of select="@ISBN"/>
</xsl:attribute>
<xsl:attribute name="title">
<xsl:value-of select="title"/>
Price: <xsl:value-of select="price"/>
15% discount if purchased by: <xsl:value-of select="$purchdate"/>
</xsl:attribute>
<xsl:apply-templates select="chapters/chapter" />
</book>
</xsl:template>
<xsl:template match="chapter">
<chapter>
<xsl:attribute name="num">
<xsl:value-of select="@num"/>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="@name"/>
</xsl:attribute>
<xsl:apply-templates/>
</chapter>
</xsl:template>
</xsl:stylesheet>
Keterangan
Menaikkan peristiwa memanggil penanganan aktivitas melalui delegasi. Untuk informasi selengkapnya tentang cara menangani peristiwa, lihat Menangani dan Menaikkan Peristiwa.
Metode ini OnTransforming juga memungkinkan kelas turunan untuk menangani peristiwa tanpa melampirkan delegasi. Ini adalah teknik yang disukai untuk menangani peristiwa di kelas turunan.
Catatan Bagi Inheritor
Saat mengambil alih di kelas turunan OnTransforming(EventArgs) , pastikan untuk memanggil OnTransforming(EventArgs) metode kelas dasar sehingga delegasi terdaftar menerima peristiwa tersebut.