Hittade på:t
XmlNode selectedNode = myXml.SelectSingleNode("/Fuses/Fuse[@Name='" + e.OldValues["Name"].ToString() + "']");
Kör väl på ett tag till men det känns som om det kan komma fler frågor kring detta! :)
3 svar · 363 visningar · startad av doggelito
Hjälp!
Försöker fixa en uppdatering av min xmlfil via en gridview.
Eftersom inte automatisk uppdatering finns inbyggt med xml som datasource så blir det till att bygga själv. :)
Har kommit så här långt:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
XmlDocument myXml = XmlDataSource1.GetXmlDocument();
XmlNode selectedNode = myXml.SelectSingleNode("descendant::Fuse[Name='" + e.OldValues["Name"].ToString() + "']");
[b]Response.Write(selectedNode.ToString());[/b]
//selectedNode.Attributes["Name"].Value = e.NewValues["Name"].ToString();
// selectedNode.Atrtibutes["Price"].value = e.NewValues["Price"].ToString();
// XmlDataSource1.Save();
GridView1.DataBind();
GridView1.EditIndex = -1;
e.Cancel = true;
}
Nu får jag felmeddelande: System.NullReferenceException: Object reference not set to an instance of an object. (feta raden)
Det är väl nått med raden ovanför den: myXml.SelectSingleNode...
Jag hajjar inte riktigt hur jag hämtar rätt rad ur xmlfilen!
Min xmlfil ser ut så här:
<?xml version="1.0" encoding="utf-8" ?>
<Fuses>
<Fuse Name="16" Price="123" FloatingPrice="98" />
<Fuse Name="20" Price="234" FloatingPrice="198" />
</Fuses>
Hittade på:t
XmlNode selectedNode = myXml.SelectSingleNode("/Fuses/Fuse[@Name='" + e.OldValues["Name"].ToString() + "']");
Kör väl på ett tag till men det känns som om det kan komma fler frågor kring detta! :)
Stött på patrull! :)
Jag la till en xsl-fil för att få till sortering av xml-filen, inga problem där.
Men nu hittar den inte längre noden som ska uppdateras av nån anledning.
Xsl-filen verkar ha egen namnsättning eller nått, hur kan jag se vad noderna heter?
Denna kod funkade innan xsl-filen men nu inte.
XmlDocument myXml = XmlDataSource1.GetXmlDocument();
XmlNode selectedNode = myXml.DocumentElement.SelectSingleNode("/Fuses/Fuse[@Name='" + e.OldValues["Name"].ToString() + "']");
xsl-filen:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Fuse">
<item>
<xsl:attribute name='Name'>
<xsl:value-of select="@Name"/>
</xsl:attribute>
<xsl:attribute name='Price'>
<xsl:value-of select="@Price"/>
</xsl:attribute>
<xsl:attribute name='FloatingPrice'>
<xsl:value-of select="@FloatingPrice"/>
</xsl:attribute>
</item>
</xsl:template>
<xsl:template match="Fuses">
<data>
<xsl:apply-templates select="Fuse">
<xsl:sort select="@Name" order="ascending"/>
</xsl:apply-templates>
</data>
</xsl:template>
</xsl:stylesheet>
Fixat! :)
Jag lära döpa taggarna i xsl-filen till samma namn som i xml-filen.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Fuse">
<Fuse>
<xsl:attribute name='Name'>
<xsl:value-of select="@Name"/>
</xsl:attribute>
<xsl:attribute name='Price'>
<xsl:value-of select="@Price"/>
</xsl:attribute>
<xsl:attribute name='FloatingPrice'>
<xsl:value-of select="@FloatingPrice"/>
</xsl:attribute>
</Fuse>
</xsl:template>
<xsl:template match="Fuses">
<Fuses>
<xsl:apply-templates select="Fuse">
<xsl:sort select="@Name" order="ascending"/>
</xsl:apply-templates>
</Fuses>
</xsl:template>
</xsl:stylesheet>