这问题搞得我浪费了半天的时间了。
问题: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;麻烦高手 指教 ,急等!
问题: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;麻烦高手 指教 ,急等!
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>
别的什么xml那些就不要发上来了。