asp.net – 避免为每个转发器重新加载所有XML数据 – vb.net
发布时间:2020-12-16 07:44:08 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用xml数据在转发器中放置转发器.我让它完全按照我的意愿工作,但我使用的方法为每个转发器重新加载数据.我想我需要扮演一个XmlNode,但我会说实话 – 我不知道从哪里开始. 这是我的代码 – 如果可能的话,我想保留代码中的所有内容. script runat="
我正在尝试使用xml数据在转发器中放置转发器.我让它完全按照我的意愿工作,但我使用的方法为每个转发器重新加载数据.我想我需要扮演一个XmlNode,但我会说实话 – 我不知道从哪里开始.
这是我的代码 – 如果可能的话,我想保留代码中的所有内容. <script runat="server"> Public doc As New XmlDocument() Public Sub Page_Load(ByVal Sender As Object,ByVal E As EventArgs) If Not Page.IsPostBack then doc.Load(Server.MapPath("~/myxml/bookstore.xml")) Dim nodes As XmlNodeList = doc.SelectNodes("Bookings/Booking[@CLIENT_NO='SA33762']") rpMyRepeater.DataSource = nodes rpMyRepeater.DataBind() End If End Sub Protected Sub itemDB(ByVal s As Object,ByVal e As RepeaterItemEventArgs) If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then Dim rpt As Repeater = CType(e.Item.FindControl("books"),Repeater) If Not (rpt Is Nothing) Then doc.Load(Server.MapPath("~/myxml/bookstore.xml")) Dim nodes2 As XmlNodeList = doc.SelectNodes("Bookings/Booking[@CLIENT_NO='SA33762']/Products/Book") rpt.DataSource = nodes2 rpt.DataBind() End If End If End Sub </script> 有任何想法吗? 解决方法
我在这里错过了什么吗?
难道你不能简单地在你的itemDB Sub中注释/删除你的doc.Load(Server.MapPath(“?/ myxml / bookstore.xml”))吗?既然你定义了doc“global”并且已经在页面加载时加载了它? (通过这样做,你已经避免重新加载xml) 这就是说,我确实与卡斯帕同意,你应该更爱用的XmlDataSource(尤其是其高速缓存能力),你没有使用你的标记中的XmlDataSource – 你可以随时代码隐藏和内定义它 – 因为你担心人们出于某种原因看到你的(基于asp.net服务器端)标记…… 例如 Public Sub Page_Load(ByVal Sender As Object,ByVal E As EventArgs) Handles Me.Load If Not Page.IsPostBack Then Dim source As New XmlDataSource() source.DataFile = "~/myxml/bookstore.xml" source.XPath = "Bookings/Booking[@CLIENT_NO='SA33762']" rpMyRepeater.DataSource = source rpMyRepeater.DataBind() End If End Sub 标记: <asp:Repeater ID="rpMyRepeater" runat="server"> <ItemTemplate> <%#XPath("//Booking/NAME/text()")%> <asp:Repeater runat="server" ID='books' DataSource='<%#XPathSelect("//Booking/Products/Book") %>'> <HeaderTemplate> <h2> Books</h2> </HeaderTemplate> <ItemTemplate> <p> Title: <%#XPath("TITLE/text()")%></p> <p> <%#XPath("BOOKCODE/text()")%></p> </ItemTemplate> </asp:Repeater> </ItemTemplate> </asp:Repeater> XML <?xml version="1.0" encoding="utf-8" ?> <Bookings> <Booking CLIENT_NO="SA33762"> <NAME>Mr Pf_Test_15033</NAME> <Products> <Book> <TITLE>My Book</TITLE> <BOOKCODE>12345</BOOKCODE> </Book> <Book> <TITLE>My Book2</TITLE> <BOOKCODE>123456</BOOKCODE> </Book> </Products> </Booking> </Bookings> 使用ListView控件(我最喜欢的asp.net控件之一)的实现将如下所示: <asp:Repeater ID="rpMyRepeater" runat="server"> <ItemTemplate> <%#XPath("//Booking/NAME/text()")%> <asp:ListView runat="server" ID="books" ItemPlaceholderID="phItems" DataSource='<%#XPathSelect("//Booking/Products/Book") %>'> <LayoutTemplate> <h2> Books</h2> <asp:PlaceHolder runat="server" ID="phItems"></asp:PlaceHolder> </LayoutTemplate> <ItemTemplate> <p> Title: <%#XPath("TITLE/text()")%></p> <p> <%#XPath("BOOKCODE/text()")%></p> </ItemTemplate> <EmptyDataTemplate> <p> Sorry no books available</p> </EmptyDataTemplate> </asp:ListView> </ItemTemplate> </asp:Repeater> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – DotNetOpenAuth在ASP.NET MVC中的OAuth
- 加快ASP.NET中的构建时间
- asp.netcore 自动挡Docker Nginx Redis(滴滴滴,自动挡)
- asp.net – 是否由子控件继承了EnableViewState属性?
- asp.net-mvc-5 – 在GenerateUserIdentityAsync方法的aspne
- 一句代码实现批量数据绑定[上篇]
- asp.net-mvc – URL中的ASP.NET MVC冒号
- asp.net – 如何在网格视图中设置样式模板字段(附加aspx页面
- Cannot access a disposed object in ASP.NET Core
- 对于ASP.Net中的IIS管理哪个更好:WMI或ADSI或托管API?有什
推荐文章
站长推荐
- asp.net-mvc – ViewData Dictionary的范围是什么
- asp.net – 如何停止所有cassini实例?
- asp.net – Facebook和G的自定义LINK共享URL
- 为什么使用ASP.NET OutputCache继续返回200 OK,而
- asp.net-mvc-4 – 如何在Durandal中使用cshtml文
- asp.net结合Ajax验证用户名是否存在的代码
- asp.net-mvc – 在asp.net mvc中使用IDataErrorI
- 如何在Vista上的IIS7下调试ASP.NET应用程序?
- asp.net类序列化生成xml文件实例详解
- asp.net-web-api – WebApi – 传递一组值
热点阅读