技术开发 频道

DataList绑定xml数据,并实现删除和修改


【IT168技术文档】

  在网络上看到很多朋友在求datalist或是repeater控件绑定xml数据源的例子,在这里整理了一下,以datalist为便写了一个DEMO.
  有xml文档:
<?xml version="1.0" encoding="utf-8" ?> <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>
  页面代码:
<%@ 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>
0
相关文章