动态编辑xml文件,达到很灵活的效果。 前台.aspx文件: <%@ Page Language="C#" MasterPageFile="~/Admin/admin.master" AutoEventWireup="true" CodeFile="AddBooksCatagory.aspx.cs" Inherits="Admin_AddBooksCatagory" Title="分类管理|第三波+书店" %> <asp:Content ID="Content1" ContentPlaceHolderID="cphAdmin" Runat="Server"> <div> <asp:TextBox runat="server" ID="txtBookCatagory" Visible="false"></asp:TextBox> <asp:Button id="btnAdd" runat="server" Text="增加分类" OnClick="btnAdd_Click"></asp:Button> <asp:Button ID="btnMakeAll" runat="server" Text="重新生成XML" OnClick="btnMakeAll_Click" /> </div> <div style="font-size:small" mce_style="font-size:small"> <asp:GridView ID="gvMain" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="Black" GridLines="Vertical" DataSourceID="odsCategories" BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" Width="777px" DataKeyNames="id" AllowPaging="True"> <Columns> <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" /> <asp:BoundField DataField="Name" HeaderText="分类名称" SortExpression="Name" /> </Columns> <FooterStyle BackColor="#CCCC99" /> <RowStyle BackColor="#F7F7DE" /> <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" /> <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" /> <AlternatingRowStyle BackColor="White" /> </asp:GridView> <asp:ObjectDataSource ID="odsCategories" runat="server" SelectMethod="GetAllCategories" TypeName="MyBookShop.BLL.CategoryManager"> </asp:ObjectDataSource> </div> </asp:Content> 后台.aspx.cs文件: using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Collections.Generic; using MyBookShop.BLL; using MyBookShop.Models; using System.Xml; public partial class Admin_AddBooksCatagory : System.Web.UI.Page { private const string ADD = "增加"; private const string ADDCATEGORY = "增加分类"; /// <summary> /// xml文件路径 /// </summary> private const string CATAGORYXML = "~/TreeView.xml"; /// <summary> /// 图书列表页路径 /// </summary> private const string BOOKLISTURL = "BookList.aspx?typeid="; private XmlDocument xmldocTree = new XmlDocument(); protected void Page_Load(object sender, EventArgs e) { } protected void btnAdd_Click(object sender, EventArgs e) { if (((Button)sender).Text.Equals(ADDCATEGORY)) { this.Operation(true, ADD); } else { this.Operation(false, ADDCATEGORY); AddCatagory(); Response.Redirect("AddBooksCatagory.aspx"); } } /// <summary> /// 相关操作 /// </summary> /// <param name="flag"></param> /// <param name="font"></param> private void Operation(bool flag, string font) { this.txtBookCatagory.Visible = flag; this.btnAdd.Text = font; this.btnMakeAll.Visible = !flag; } /// <summary> /// 添加一个分类 /// </summary> private void AddCatagory() { Category catagory = new Category(); catagory.Name = this.txtBookCatagory.Text.Trim(); CategoryManager.AddCategory(catagory); xmldocTree.Load(Server.MapPath(CATAGORYXML)); MakeChild(catagory); xmldocTree.Save(Server.MapPath(CATAGORYXML)); } /// <summary> /// 更新全部XML /// </summary> private void ModifyXml() { xmldocTree.Load(Server.MapPath(CATAGORYXML)); xmldocTree.SelectSingleNode("siteMapNode").InnerText=""; foreach (Category catagory in CategoryManager.GetAllCategories()) { MakeChild(catagory); } xmldocTree.Save(Server.MapPath(CATAGORYXML)); } /// <summary> /// 设置子节点 /// </summary> /// <param name="catagory"></param> private void MakeChild(Category catagory) { XmlElement xmlelNode = xmldocTree.CreateElement("siteMapNode"); xmlelNode.SetAttribute("title", catagory.Name); xmlelNode.SetAttribute("url", BOOKLISTURL + catagory.Id.ToString()); xmlelNode.SetAttribute("description", ""); xmldocTree.SelectSingleNode("siteMapNode").AppendChild(xmlelNode); } /// <summary> /// 更新XML文件的事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnMakeAll_Click(object sender, EventArgs e) { ModifyXml(); } }