我有以下Page_Load函数…
protected void Page_Load(object sender, EventArgs e)
{
XmlDataSource1.Data = GetXmlFromFile(Request.QueryString["file"]);
XmlDataSource1.DataBind();
Repeater1.DataBind();
}
这个Page_Load所在的页面被父页面调用。每次调用这个Page_Load时,查询字符串中的“file”的值都会不同。所以每次我都会从不同的文件中接收XML内容,这些文件插入到XmlDataSource中,然后被Repeater绑定。从文件中获取XML数据非常有效,但是当我绑定repeater时,它只在第一次通过Page_Load时有效。此后每次执行此代码时,中继器中都会显示来自第一个XML文件的相同结果。
我在这里遗漏了什么呢?我怎样才能在每次页面加载时将XML数据绑定到中继器,而不仅仅是第一个页面?
3条答案
按热度按时间zvms9eto1#
是否尝试在每次加载时创建新的XmlDataSource?
wwwo4jvm2#
我试图用一个简单的实现来复制这个问题,这个实现遵循了你的主要概念。
代码隐藏:
标记:
当我浏览到“Default.aspx?file=West.xml”时,这是有效的,其中west.xml是我的App_Data文件夹中的xml文件。当我在查询字符串中输入另一个现有的xml文件时,它会按预期执行。这是快速而肮脏的,但当与现有代码进行比较时,它可能会给予你一些想法。
qqrboqgw3#
进一步调查发现,问题出在XmlDataSource的缓存标志被设置为default true。其他数据源类型(如SqlDataSource)没有启用此标志。
这在下面的文章Link中有更全面的介绍
禁用缓存功能后,一切都按预期工作。