这问题搞得我浪费了半天的时间了。
问题:datalist可以对xml数据源(用xml当做数据库)分页的同时可以增删改查xml数据库文件吗?        DataSet ds = new DataSet();
        ds.ReadXml(path);
        Session["ds1"] = ds;
        PagedDataSource pd = new PagedDataSource();
        pd.DataSource = ds.Tables[0].DefaultView;
        pd.AllowPaging = true;
        pd.PageSize = 3;
        int PageCounts = pd.PageCount;
        int CurPage;        if (Request.QueryString["Page"] != null)
        {
            CurPage = Convert.ToInt32(Request.QueryString["Page"]);
        }
        else
        {
            CurPage = 1;
        }        pd.CurrentPageIndex = CurPage - 1;        LabCurPage.Text = "当前页:" + CurPage.ToString();        LabCounts.Text = "总页数:" + PageCounts.ToString();
        //上一页
        if (!pd.IsFirstPage)
        {
            LinkPre.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage - 1);        }
        //下一页
        if (!pd.IsLastPage)
        {
            this.LinkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage + 1);
        }
        //首页
        this.LinkFirst.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(1); 
        //尾页
        this.LinkLast.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(PageCounts);        datalist1.DataSource = pd;
        datalist1.DataBind();可以分页,但修改或删除时就出现错误了,也就是说比如我要删除 第二页的第一条记录,他删除的却是第一页的第一条记录。修改 情况也一样。datalist1_UpdateCommand:修改DataSet ds = (DataSet)Session["ds1"];
ds.Tables[0].Rows[e.Item.ItemIndex]["xiju_name1"] = ((TextBox)e.Item.FindControl("tb_name")).Text;
ds.WriteXml(path);
Session["ds1"] = ds;
datalist1.EditItemIndex = -1;麻烦高手 指教 ,急等!

解决方案 »

  1.   

    可以的,给你一个例子你参照一下
    using System;   
    using System.Data;   
    using System.Configuration;   
    using System.Collections;   
      
    using System.Xml;   
      
    public class Util_Xml 
    {   
        string xmlFile = System.Configuration.ConfigurationManager.AppSettings["xmlFile"];   
        XmlDocument XmlDoc = new XmlDocument();   
      
      //添加
        protected void XmlAdd()   
        {   
            XmlNode objRootNode = XmlDoc.SelectSingleNode("//Root");    //声明XmlNode对象   
            XmlElement objChildNode = XmlDoc.CreateElement("Student");  //创建XmlElement对象   
            objChildNode.SetAttribute("id", "1");   
            objRootNode.AppendChild(objChildNode);   
            //   
            XmlElement objElement = XmlDoc.CreateElement("Name");//???结点和元素的区别?方法都一样.   
            objElement.InnerText = "tree1";   
            objChildNode.AppendChild(objElement);   
            //保存   
            XmlDoc.Save(Server.MapPath("../" + xmlFile));   
        }   
        
        //删除
        protected void XmlDelete()   
        {   
            string Node = "//Root/Student[Name='tree1']";//Xml是严格区分大小写的.   
            XmlDoc.SelectSingleNode(Node).ParentNode.RemoveChild(XmlDoc.SelectSingleNode(Node));   
            //保存   
            XmlDoc.Save(Server.MapPath("../" + xmlFile));   
        }   
      
        //更新
        protected void XmlUpdate()   
        {   
            //XmlDoc.SelectSingleNode("//Root/Student[Name='tree1']/Name").InnerText = "tree2";   
            XmlDoc.SelectSingleNode("//Root/Student[Name='tree1']").Attributes["id"].Value = "001";   
            //保存   
            XmlDoc.Save(Server.MapPath("../" + xmlFile));   
        }   
        
        //查询
        protected void XmlQuery()   
        {   
            XmlNodeList NodeList = XmlDoc.SelectNodes("//Root/Student");//查询全部student节点   
            //循环遍历节点,查询是否存在该节点   
            for (int i = 0; i < NodeList.Count; i++)   
            {   
                Response.Write(NodeList[i].ChildNodes[0].InnerText);   
            }   
      
            //查询单个节点,//表示全部匹配的元素./表示以此为根的子元素.javascript下的查询也是一样.   
            string XmlPathNode = "//Root/Student[Name='rock']/Photo";   
            Response.Write(XmlDoc.SelectSingleNode(XmlPathNode).InnerText);   
        }   
    }  
    <?xml version="1.0" encoding="gb2312"?>  
    <Root>  
      <Student Admin="no">  
        <Name>rock</Name>  
        <NickName>rock1</NickName>  
        <Pwd>123</Pwd>  
        <Sex>男生</Sex>  
        <Birthday>1986-1-1</Birthday>  
        <Email>[email protected]</Email>  
        <QQ>123374355</QQ>  
        <Msn>[email protected]</Msn>  
        <Tel>13005129336</Tel>  
        <Homepage>http://www.loveplc.cn</Homepage>  
        <Address>广州</Address>  
        <Work>asp.net菜鸟</Work>  
        <Photo>images/rock.gif</Photo>  
        <Time>2008-3-18 10:15:29</Time>  
      </Student>  
      <Student Admin="yes">  
        <Name>tree</Name>  
        <NickName>宿舍老大</NickName>  
        <Pwd>51aspx</Pwd>  
        <Sex>男生</Sex>  
        <Birthday>  
        </Birthday>  
        <Email>[email protected]</Email>  
        <QQ>  
        </QQ>  
        <Msn>  
        </Msn>  
        <Tel>  
        </Tel>  
        <Homepage>  
        </Homepage>  
        <Address>  
        </Address>  
        <Work>  
        </Work>  
        <Photo>  
        </Photo>  
        <Time>2008-3-26 11:39:57</Time>  
      </Student>  
      <Student>  
        <Name>tree2</Name>  
      </Student>  
      <Student id="001">  
        <Name>tree1</Name>  
      </Student>  
      

  2.   

    可以的,使用Linq 跟操作数据库差不了多少!!~
      

  3.   

    谢谢 ,不过你们能否直接代码指点我修改?我才刚刚接触xml(做数据库用),而LINGQ只是听说,所以急着用,还没时间详细了解!多谢了!
    别的什么xml那些就不要发上来了。