我有一个xml文件: play.xml
<music>
<Entry>
<Title>千里之外 - 周杰伦</Title>
<Ref href="http://www.lzpcc.com.cn/268316.wma" />
</Entry>
<Entry>
<Title>听妈妈的话 - 周杰伦</Title>
<Ref href="http://wma.1ting.com/wmam/2.wma" />
</Entry>
</music>
怎样把这个文件邦定到DataList上呢?并对它进行编辑,删除,添加操作.对应的是:
歌曲名称 地址 操作
千里之外 - 周杰伦 http://www.lzpcc.com.cn/268316.wma / 编辑 删除 添加
听妈妈的话 - 周杰伦 http://wma.1ting.com/wmam/2.wma" / 编辑 删除 添加
<music>
<Entry>
<Title>千里之外 - 周杰伦</Title>
<Ref href="http://www.lzpcc.com.cn/268316.wma" />
</Entry>
<Entry>
<Title>听妈妈的话 - 周杰伦</Title>
<Ref href="http://wma.1ting.com/wmam/2.wma" />
</Entry>
</music>
怎样把这个文件邦定到DataList上呢?并对它进行编辑,删除,添加操作.对应的是:
歌曲名称 地址 操作
千里之外 - 周杰伦 http://www.lzpcc.com.cn/268316.wma / 编辑 删除 添加
听妈妈的话 - 周杰伦 http://wma.1ting.com/wmam/2.wma" / 编辑 删除 添加
解决方案 »
- 问一个查询的问题!?
- 事件是委托的实例呢?还是:事件也是一个类呢?
- 在winform程序中如何访问另一网站的某个页面并接收返回值
- webform中treeview被选中的节点样式
- 递归更新数据库方法哪里错了?
- 网络编程高手请进帮我读一段代码
- 怎么用C#实现在XP界面下,把用户权限提升??
- 在客户端可以动态引用web service吗?
- 我新建的WinForm应用程序编译成.dll文件,每次编译总提示我说*.dll正在使用?急!!!!!!!!!!!
- 急!如何在txtbox文本框中读取用“,”隔开的数值,并绑定到dgdgrid中
- 高手请教:如何解决事件间需要延迟的问题
- delegate--小女子请教各位大虾:)
dst.ReadXml(@"C:\play.xml");
datalist.datasource = dst;这样行不?没试过,嘻~~~
doc.Load(Server.MapPath("play.xml"));
XmlNodeList nodes = doc.SelectNodes("//Ref");
foreach (XmlNode node in nodes)
{
XmlElement elem = (XmlElement)node;
XmlAttribute attr = elem.GetAttributeNode("href");
Response.Write(attr.InnerText+"<br/>");
}可以取出Ref结点的属性 绑定自己可以构造
或者使用DataSet.ReadXml将xml读入到dataset中
''' 根据XML文件返回表
''' </summary>
''' <param name="path">路径</param>
''' <returns></returns>
''' <res></res>
Public Function getdata(ByVal path As String) As DataView
Dim dt As DataTable = New DataTable()
Dim dv As DataView = New DataView()
Dim stream As FileStream = New FileStream(Server.MapPath(path), FileMode.Open)
Dim doc As XmlDataDocument = New XmlDataDocument
doc.DataSet.ReadXml(New StreamReader(stream))
dt = doc.DataSet.Tables(0)
dv = dt.DefaultView
stream.Close()
Return dv
End Function
XmlDataDocument xmlDoc = new XmlDataDocument();
DataSet xmlDataSet;
//将Dataset与xmldoc关联
xmlDataSet = xmlDoc.DataSet;
//读取xml 文件,同时xmldataset也可读入相应的数据
xmlDoc.Load("play.xml");然后再将xmldataset的值显示到datalist中.
楼主试试<%@ Page Language="C#" %>
<%@ Import Namespace="System.Xml"%>
<%@ Import Namespace="System.Xml.XPath"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">
private XmlDocument doc = new XmlDocument();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
bind();
}
}
protected void bind()
{
//XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("x1.xml"));
XmlNodeList nodes = doc.SelectNodes("music/Entry");
DataList1.DataSource = nodes;
DataList1.DataBind();
} protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
switch(e.CommandName)
{
case "edit":
DataList1.EditItemIndex = e.Item.ItemIndex;
bind(); break;
case "cancel":
DataList1.EditItemIndex = -1;
bind(); break;
case "dele":
doc.Load(Server.MapPath("x1.xml"));
XmlNode node=doc.SelectSingleNode("/music/Entry/Ref[@href='"+e.CommandArgument+"']");
node.ParentNode.ParentNode.RemoveChild(node.ParentNode); doc.Save(Server.MapPath("x1.xml"));
bind(); break;
case "update":
doc.Load(Server.MapPath("x1.xml"));
XmlNode xnode = doc.SelectSingleNode("/music/Entry/Ref[@href='" + e.CommandArgument + "']");
XmlElement elem1 = xnode as XmlElement;
elem1.SetAttribute("href", ((TextBox)e.Item.FindControl("tb2")).Text);
doc.Save(Server.MapPath("x1.xml"));
DataList1.EditItemIndex = -1;
bind(); break; }
}
</script><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>datalist绑定xml</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DataList ID="DataList1" EnableViewState="true" runat="server" OnItemCommand="DataList1_ItemCommand" >
<HeaderTemplate>
<table>
<tr>
<td>歌曲名称</td>
<td>歌曲地址</td>
<td>操作</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#((XmlNode)Container.DataItem)["Title"].InnerText%> </td>
<td><%#((XmlNode)Container.DataItem)["Ref"].GetAttribute("href").ToString()%> </td>
<td>
<asp:LinkButton ID="ltn1" Text="编辑" runat="server" CommandName="edit" CommandArgument='<%#((XmlNode)Container.DataItem)["Ref"].GetAttribute("href").ToString()%>'></asp:LinkButton>
<asp:LinkButton Text="删除" ID="ltn2" runat="server" CommandName="dele" CommandArgument='<%#((XmlNode)Container.DataItem)["Ref"].GetAttribute("href").ToString()%>'></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
<EditItemTemplate>
<tr>
<td><asp:TextBox ID="tb1" runat="server" Text='<%#((XmlNode)Container.DataItem)["Title"].InnerText%>'></asp:TextBox></td>
<td><asp:TextBox ID="tb2" runat="server" Text='<%#((XmlNode)Container.DataItem)["Ref"].GetAttribute("href").ToString()%>'></asp:TextBox></td>
<td>
<asp:LinkButton ID="ltn3" runat="server" CommandArgument='<%#((XmlNode)Container.DataItem)["Ref"].GetAttribute("href").ToString()%>' CommandName="update">保存</asp:LinkButton>
<asp:LinkButton ID="ltn4" runat="server" CommandName="cancel">取消</asp:LinkButton></td>
</tr>
</EditItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:DataList>
</div>
</form>
</body>
</html>