首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不会记住在代码中设置XMLDataSource.XPath

不会记住在代码中设置XMLDataSource.XPath
EN

Stack Overflow用户
提问于 2012-10-12 23:34:37
回答 1查看 1.2K关注 0票数 0

在我的应用程序中,我在ASPX中定义了一个XMLDataSource:

代码语言:javascript
复制
<asp:XmlDataSource ID="XmlThickness" runat="server"
    DataFile="~/XML/Data/products.xml" EnableCaching="False" 
    EnableViewState="False" 
    ></asp:XmlDataSource>

此数据源为网格提供数据。

在我的代码中,我在特定函数的特定点设置了XPath,然后在XMLDataSource上发出一个新的DataBound(),导致网格更新:

代码语言:javascript
复制
XmlThickness.XPath = "/Item[@label='" + tvwMaterials.SelectedNode.Text + "']/Thickness/Thick";
XmlThickness.DataBind();

所有这些都很有吸引力,但是当我尝试从另一个函数中读出XPAth时,我收到一条错误消息。

代码语言:javascript
复制
XmlNode thick = myDataSource.SelectSingleNode(XmlThickness.XPath.ToString());

调试表明XPath表达式实际上是空的。

我试图将DataSource的创建移到代码中,然后才设置网格的DataSourceID,但这并不起作用。

在尝试此操作之前,我在XMLDataSource定义中定义了一个默认XPath,此时,XMLNode thick行返回此默认字符串。

我有点困惑,为什么在我在前面的函数中显式设置了XPath之后,XMLDataSource没有保留它。有人能帮我解释一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-12 23:58:52

与大多数数据源控件不同,XmlDataSource节点不存储在viewState中。应该只调用一次databind,并且控件应该在回发时自动重新生成自身。如果你想改变数据源,你可以在视图状态中从树中保存selectedNode,在回发时,在你赋值DataSourceID并调用DataBind()之前,通过从Viewstate中检索值来改变你的DataSourceID。看看这里:

http://forums.asp.net/t/1437802.aspx/1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12862464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档