使用Web方式编辑web.config文件的方法

来源:互联网 发布:win8.1 mysql使用教程 编辑:程序博客网 时间:2024/06/05 18:04

一、添加控件

    一个ListBox保存appSettings节中的内容。控件的AutoPostBack属性要设置成True。

   <asp:ListBox id="ListBox1" AutoPostBack="True" OnSelectedIndexChanged="SelectedIndexChanged" Height="184px" runat="server"/>

两个TextBox用来填写键名和键值。

<asp:TextBox  id="txtKey" runat="server"  />

<asp:TextBox  id="txtValue" runat="server"  />

三个Button分别是保存用于保存修改后的键值。添加添加新的键。删除删除不用的键。

<asp:Button  id="cmd_modify" runat="server" Text="保存" OnClick="cmd_modify_Click"/>

<asp:Button  id="cmd_Add" runat="server" Text="添加"  OnClick="cmd_Add_Click"/>

<asp:Button  id="cmd_Del" runat="server" Text="删除"  OnClick="cmd_Del_Click"/>

二、添加函数

    1. 读取现有配置。因为web.config为xml格式的文档。所以用一个XmlDocument对象把它读到内存。然后把appSettings节中的所有节放到一个XmlNodeList中。最后添加到ListBox。

      void BindData(){

     XmlDocument xd=new XmlDocument();

     xd.Load(Server.MapPath("web.config"));  //加载文件

     XmlNodeList xnl=xd.SelectNodes("configuration/appSettings/add");  //选择小节。

     ListBox1.Items.Clear();

       foreach(XmlNode xn in xnl)   //添加到ListBox

       {

      ListItem li=new ListItem();

      li.Text=xn.Attributes["key"].Value;

      li.Value=xn.Attributes["value"].Value;

      ListBox1.Items.Add(li);

       }

     }

    2.修改数据。当一个现有的配置项被选定时,两个TextBox会分别显示键名和键值。此时可以修改键值。

      private void cmd_modify_Click(object sender, System.EventArgs e)

      {

     XmlDocument xd=new XmlDocument();

     xd.Load(Server.MapPath("web.config"));

     XmlNodeList xnl=xd.SelectNodes("configuration/appSettings/add");

     foreach(XmlNode xn in xnl)  //遍历所有键,修改相应的键。

     {

           if(xn.Attributes["key"].Value==txtKey.Text)

           xn.Attributes["value"].Value=txtValue.Text;

     }

     xd.Save(Server.MapPath("web.config"));  //将修改的结果存回文件。

     txtKey.Text="";txtValue.Text="";

     BindData();

      }

    3.添加键。直接在两个TextBox填入键名和键值可添加一个新的键。

      private void cmd_Add_Click(object sender, System.EventArgs e)

      {

     XmlDocument xd=new XmlDocument();

     xd.Load(Server.MapPath("web.config"));

     XmlNode father=xd.SelectSingleNode("configuration/appSettings");  //此次选择的是父节点

     XmlNode xn=father.FirstChild.Clone();  //创建一个新的字节点。

     xn.Attributes["key"].Value=txtKey.Text;

     xn.Attributes["value"].Value=txtValue.Text;

     father.AppendChild(xn);   //添加子节点

     xd.Save(Server.MapPath("web.config"));  //存回文件

     txtKey.Text="";txtValue.Text="";

     BindData();

      }

    4.删除键。

      private void cmd_Del_Click(object sender, System.EventArgs e)

      {

     XmlDocument xd=new XmlDocument();

     xd.Load(Server.MapPath("web.config"));

     XmlNode father=xd.SelectSingleNode("configuration/appSettings");  //选择父节点

     XmlNodeList xnl=father.ChildNodes;    //获取子节点的一个集合

     foreach(XmlNode xn in xnl)   //遍历子节点

        {

         if(xn.Attributes["key"].Value==txtKey.Text)  //找到选择的节点删除掉

              father.RemoveChild(xn);

        }

     xd.Save(Server.MapPath("web.config"));    //存回文件

     txtKey.Text="";txtValue.Text="";

     BindData();

      }

 

    5. 页面首次加载时在载入现有的设置项,选择已有项时显示键值。

      private void Page_Load(object sender, System.EventArgs e)

      {

         if(!IsPostBack)

           BindData(); //调用函数将数据读入ListBox

      }

      private void SelectedIndexChanged(object sender, System.EventArgs e)

      {

     txtKey.Text=ListBox1.Items[ListBox1.SelectedIndex].Text;

     txtValue.Text=ListBox1.Items[ListBox1.SelectedIndex].Value;

      }