我的xml文件中有个people节点,在people节点下有个name节点,其中 <name>他 </name>,运行后点击添加按钮
name节点变为 <name value="他">他<value>
我的后台代码为 <div style="text-align:center">
<table>
<asp:Repeater ID="rptResult" runat="server">
<ItemTemplate>
<tr>
<td> <%# Eval("no") %> </td>
<td> <%# Eval("name") %> </td>
<td> <%# Eval("age") %> </td>
<td> <%# Eval("sex") %> </td>
<td> <a href="AddXml.aspx">添加 </a> </td>
<td> <a href="EditXml.aspx?Xid= <%# Eval("no") %>">编辑 </a> </td>
<td> <a href="DelXml.aspx?Xid= <%# Eval("no")%>">删除 </a> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</div> 前台为
protected void btnAdd_Click(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("XMLFile/xmlFile.xml"));
//创建一个节点
XmlElement exml = doc.CreateElement("people");
//在exml下创建节点
XmlElement elno = doc.CreateElement("no");
XmlElement elname = doc.CreateElement("name");
XmlElement elage = doc.CreateElement("age");
XmlElement elsex = doc.CreateElement("sex");
elno.InnerText = returncount();
elname.SetAttribute("value",this.txtName.Text.Trim());
elage.InnerText = this.txtAge.Text.Trim();
elsex.InnerText = this.txtSex.Text.Trim();
//将exml下的节点加到exml上
exml.AppendChild(elno);
exml.AppendChild(elname);
exml.AppendChild(elage);
exml.AppendChild(elsex); doc.DocumentElement.AppendChild(exml);
doc.Save(Server.MapPath("XMLFile/xmlFile.xml"));
Response.Redirect("default.aspx");
} public string returncount()
{
//返回最后的no值并+1
string n = string.Empty;
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("XMLFile/xmlFile.xml"));
XmlNode node = doc.DocumentElement.LastChild;
if (node != null)
{
n = Convert.ToString(Convert.ToUInt32(node["no"].InnerText) + 1);
}
return n;
}
我每次运行都出错,错误为DataBinding:“System.Data.DataRowView”不包含名为“name”的属性,请教高手,怎么解决
name节点变为 <name value="他">他<value>
我的后台代码为 <div style="text-align:center">
<table>
<asp:Repeater ID="rptResult" runat="server">
<ItemTemplate>
<tr>
<td> <%# Eval("no") %> </td>
<td> <%# Eval("name") %> </td>
<td> <%# Eval("age") %> </td>
<td> <%# Eval("sex") %> </td>
<td> <a href="AddXml.aspx">添加 </a> </td>
<td> <a href="EditXml.aspx?Xid= <%# Eval("no") %>">编辑 </a> </td>
<td> <a href="DelXml.aspx?Xid= <%# Eval("no")%>">删除 </a> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</div> 前台为
protected void btnAdd_Click(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("XMLFile/xmlFile.xml"));
//创建一个节点
XmlElement exml = doc.CreateElement("people");
//在exml下创建节点
XmlElement elno = doc.CreateElement("no");
XmlElement elname = doc.CreateElement("name");
XmlElement elage = doc.CreateElement("age");
XmlElement elsex = doc.CreateElement("sex");
elno.InnerText = returncount();
elname.SetAttribute("value",this.txtName.Text.Trim());
elage.InnerText = this.txtAge.Text.Trim();
elsex.InnerText = this.txtSex.Text.Trim();
//将exml下的节点加到exml上
exml.AppendChild(elno);
exml.AppendChild(elname);
exml.AppendChild(elage);
exml.AppendChild(elsex); doc.DocumentElement.AppendChild(exml);
doc.Save(Server.MapPath("XMLFile/xmlFile.xml"));
Response.Redirect("default.aspx");
} public string returncount()
{
//返回最后的no值并+1
string n = string.Empty;
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("XMLFile/xmlFile.xml"));
XmlNode node = doc.DocumentElement.LastChild;
if (node != null)
{
n = Convert.ToString(Convert.ToUInt32(node["no"].InnerText) + 1);
}
return n;
}
我每次运行都出错,错误为DataBinding:“System.Data.DataRowView”不包含名为“name”的属性,请教高手,怎么解决
楼主没把问题说清楚,是开始绑定时就错还是你执行这个添加操作后绑定出错
你添加后xml文件中数据是否添加进去了,格式有没问题
若是绑定错误把绑定代码贴出来
绑定代码 protected void Page_Load(object sender, EventArgs e)
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("XMLFile/xmlFile.xml"));
if (ds.Tables.Count > 0)
{
this.rptResult.DataSource = ds.Tables[0].DefaultView;
this.rptResult.DataBind();
}
}
我从xml中取值时是用的xmlNode来取节点
你试下这个
然后给他属性赋值
调试查看一下,取出来后 ds.Table[0] 中的数据结构是不是你想要的。
xml.Load(Server.MapPath("XMLFile.xml"));
XmlNode tn = (XmlNode)xml.DocumentElement.FirstChild.FirstChild.CloneNode(false);
tn.Attributes["title"].Value = "学生-3";
tn.Attributes["url"].Value = "HtmlEditor.aspx";
xml.DocumentElement.FirstChild.AppendChild(tn);
xml.Save(Server.MapPath("XMLFile.xml"));
Response.Redirect("XMLTemp.aspx");
<?xml version="1.0" encoding="utf-8"?>
<school title="学校" url="HtmlEditor.aspx">
<class title="班级-1" url="HtmlEditor.aspx">
<student title="学生-1" url="HtmlEditor.aspx">
</student>
<student title="学生-2" url="HtmlEditor.aspx">
</student>
</class>
<class title="班级-2" url="HtmlEditor.aspx">
<student title="学生-1" url="HtmlEditor.aspx">
</student>
<student title="学生-2" url="HtmlEditor.aspx">
</student>
</class>
</school>