私のアプリケーションでは、ASPXでXMLDataSourceを定義しました。
<asp:XmlDataSource ID="XmlThickness" runat="server"
DataFile="~/XML/Data/products.xml" EnableCaching="False"
EnableViewState="False"
></asp:XmlDataSource>
このデータソースはグリッドにフィードします。
私のコードでは、特定の関数の特定のポイントにXPathを設定してから、XMLDataSourceで新しいDataBound()を発行して、グリッドを更新します。
XmlThickness.XPath = "/Item[@label='" + tvwMaterials.SelectedNode.Text + "']/Thickness/Thick";
XmlThickness.DataBind();
これらはすべて魅力的ですが、別の関数内からXPAthを読み取ろうとすると、エラーメッセージが表示されます。
XmlNode thick = myDataSource.SelectSingleNode(XmlThickness.XPath.ToString());
デバッグでは、XPath式が実際には空であることが示されています。
DataSourceの作成をコードに移動しようとしましたが、グリッドのDataSourceIDを設定しただけで、うまくいきませんでした。
これを試す前に、XMLDataSource定義でデフォルトのXPathを定義しました。その時点で、XMLNode thick
行はこのデフォルトの文字列を返しました。
以前の関数でXPathを明示的に設定した後、XPathがXMLDataSourceafdterに保持されない理由について少し混乱しています。誰かが私のためにこれに光を当ててもらえますか?