XmlDataSource 如何使用?

jianshao810 2011-02-28 03:58:25

<?xml version="1.0" encoding="utf-8" ?>
<items>
<item NavigateUrl="" Text="用户管理" Wrap="on">
<itemChild javascript="" Text="用户管理1" ToolTip="用户管理1" NavigateUrl=""></itemChild>
<itemChild javascript="" Text="用户管理2" ToolTip="用户管理3" NavigateUrl=""></itemChild>
<itemChild javascript="" Text="用户管理2" ToolTip="用户管理4" NavigateUrl=""></itemChild>
</item>
<item NavigateUrl="" Text="文章管理" Wrap="on">
<itemChild javascript="" Text="文章管理1" ToolTip="文章管理1" NavigateUrl=""></itemChild>
<itemChild javascript="" Text="文章管理4" ToolTip="文章管理4" NavigateUrl=""></itemChild>
<itemChild javascript="" Text="文章管理4" ToolTip="文章管理4" NavigateUrl=""></itemChild>
<itemChild javascript="" Text="文章管理4" ToolTip="文章管理4" NavigateUrl=""></itemChild>
<itemChild javascript="" Text="文章管理4" ToolTip="文章管理4" NavigateUrl=""></itemChild>
</item>
</items>


<asp:XmlDataSource id='xmldata' runat="server" DataFile="~/NavigateXML/LeftMenu.config" XPath="/items/item"></asp:XmlDataSource>
<asp:Repeater ID="RepMenu" runat="server" DataSourceID="xmldata" >
<ItemTemplate>
<h2 class='<%#XPath("@Wrap") %>'><a href="#"><%#XPath("@Text")%></a></h2>
<ul style='display: block'>
<li><a><%#XPath("itemChild/@Text")%></a></li>
</ul>

</ItemTemplate>
</asp:Repeater>

红色那段为什么只能找出第一个,而不是全部查找出来呢?
...全文
311 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
书呆子 2013-01-07
  • 打赏
  • 举报
回复
我也有个问题 就是我的xml不是文件 而是字符串string(即把xml数据全部读出来了)。这样我要怎么绑定到XmlDataSource上?
ahpanghupang 2011-03-01
  • 打赏
  • 举报
回复
学习啦下 。,, 楼主 不知道走 后台里面
好不好绑 ???
先前你出错的原因 是否找到
用后台手动绑定
wuyq11 2011-02-28
  • 打赏
  • 举报
回复
用XPath
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="XmlDataSource1">
<ItemTemplate>
<li><%# XPath("").ToString()%></li>
</ItemTemplate>
</asp:Repeater>
嵌套如
XmlDataSource2.XPath = "countrys/country[@id='China']/city";

http://developer.51cto.com/art/200611/34730_1.htm
jianshao810 2011-02-28
  • 打赏
  • 举报
回复
<asp:Repeater ID="RptMenu" runat="server" DataSourceID="xmldata"
onitemdatabound="RepMenu_ItemDataBound" >
<ItemTemplate>
<h2 class='<%#XPath("@Wrap") %>'><a href="#"><%#XPath("@Text")%></a></h2>
<ul>
<asp:Repeater ID="rptMenuChild" runat="server" DataSource='<%#XPathSelect("itemChild")%>'>
<ItemTemplate>
<li><a><%#XPath("@Text") %></a></li>
</ItemTemplate>
</asp:Repeater>
</ul>
</ItemTemplate>
</asp:Repeater>
我也觉得是reperter嵌套,但是我这样嵌套照样不行。
其他没变,就变了
<asp:Repeater ID="rptMenuChild" runat="server" DataSource='<%#XPathSelect("itemChild")%>'>
<ItemTemplate>
<li><a><%#XPath("@Text") %></a></li>
</ItemTemplate>
</asp:Repeater>
这里。。
遊戲王千金 2011-02-28
  • 打赏
  • 举报
回复
使用Repeater嵌套.
把<%#XPath("itemChild/@Text")%>再写一个循环


<asp:Repeater ID="Repeater2"
DataSource='<%#XPathSelect("item /itemChild ")%>'
runat="server">
<ItemTemplate>
<%#XPath("@ToolTip")%>
</ItemTemplate>
</asp:Repeater>




jianshao810 2011-02-28
  • 打赏
  • 举报
回复
<ul style='display: block'>
<li><a><%#XPath("itemChild/@Text")%></a></li>
</ul>
由于没有标志为红色,其实就是这段为什么只查找出第一个。
我用
protected void RepMenu_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
XmlNode node = e.Item.DataItem as XmlNode;
if (node != null)
{
HtmlContainerControl hc = e.Item.FindControl("ChildUl") as HtmlContainerControl;
string wrap = node.Attributes["Wrap"].ToString().Trim().ToLower();
string liHtml = @" <li><a>{0}</a></li>";
hc.Style["display"] = wrap.Equals("on") ? "block" : "none";
foreach (XmlNode child in node.ChildNodes)
{
hc.InnerHtml += string.Format(liHtml, child.Attributes["text"].ToString().Trim());
}
}
}
}
这样的方式,但是node 确实 null的。
子夜__ 2011-02-28
  • 打赏
  • 举报
回复
友情帮顶 晚上回家看。

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧