我的updatepanel有个非常非常奇怪的问题。我做了一个省市联动的三联dropdownlist,把内容存储于XML内,并添加了三个button:“修改”,“删除”,“添加”功能来修改dropdownlist中的内容,并作为updatepanel的trigger。  其他一切正常,但是放在updatepanel内的dropdownlist在“修改”,“删除”,“添加”之后都不能立即更新,而要再点一次才能看到新的结果。我trace了一下,点完button后,xml已经做了修改,而且我也重新绑定了dropdownlist,甚至还手动添加了updatepanel.update()事件,但updatepanel就是不能立即更新。  我觉得是不是trigger使updatepanel更新的事件要先于后台的button_click的code呢?不过这也太说不过去了,请各位大大看看!

解决方案 »

  1.   

    代码如下。
    1、前台:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>    <div style="width:30%; float:left">
            <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional">
                <ContentTemplate>
                    所在地区<br />
                    <asp:TextBox ID="XML1TextBox1" runat="server" Width="100px"></asp:TextBox>
                    <asp:Button ID="XML1change" runat="server" Text="修改" OnClick="XML1change_Click" />
                    <br />
                    <asp:ListBox ID="XML1ListBox" runat="server" AutoPostBack="True"                 
                        Width="106px" Height="150px" 
                        onselectedindexchanged="XML1ListBox_SelectedIndexChanged" 
                        DataSourceID="XmlDataSource1" DataTextField="name" DataValueField="name"></asp:ListBox>
                    <asp:Button ID="XML1delete" runat="server" Text="删除" onclick="XML1delete_Click"/>
                    <br />
                    <asp:TextBox ID="XML1TextBox2" runat="server" Width="100px"></asp:TextBox>
                    <asp:Button ID="XML1add" runat="server" Text="添加" onclick="XML1add_Click" 
                        PostBackUrl="~/XMLs/SetXMLs.aspx" />                
                    <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/Citys.xml" 
                        XPath="所在省份/所在地区"></asp:XmlDataSource>                
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="XML1add" EventName="Click" />
                    <asp:AsyncPostBackTrigger ControlID="XML1change" EventName="Click" />
                    <asp:AsyncPostBackTrigger ControlID="XML1delete" EventName="Click" />
                    <asp:AsyncPostBackTrigger ControlID="XML1ListBox" 
                        EventName="SelectedIndexChanged" />
                </Triggers>
            </asp:UpdatePanel>
            <asp:Button ID="Button1" runat="server" Text="change" onclick="Button1_Click" />
        </div>
        <div style="width:30%; float:left">
            <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                <ContentTemplate>
                    所在市县<br /> 
                    <asp:TextBox ID="XML2TextBox1" runat="server" Width="100px"></asp:TextBox>
                    <asp:Button ID="XML2change" runat="server" Text="修改" 
                    onclick="XML2change_Click"/>
                    <br />
                    <asp:ListBox ID="XML2ListBox" runat="server" AutoPostBack="True" 
                    Width="106px" Height="150px" DataSourceID="XmlDataSource2" 
                    DataTextField="name" DataValueField="name" 
                    onselectedindexchanged="XML2ListBox_SelectedIndexChanged" ></asp:ListBox>
                    <asp:Button ID="XML2delete" runat="server" Text="删除" 
                    onclick="XML2delete_Click" />
                    <br />
                    <asp:TextBox ID="XML2TextBox2" runat="server" Width="100px"></asp:TextBox>
                    <asp:Button ID="XML2add" runat="server" Text="添加" onclick="XML2add_Click" 
                    style="height: 26px" />
                    <asp:XmlDataSource ID="XmlDataSource2" runat="server" DataFile="~/Citys.xml"             
                    XPath="所在省份/所在地区/所在市县"></asp:XmlDataSource>            </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="XML2add" EventName="Click" />
                    <asp:AsyncPostBackTrigger ControlID="XML2change" EventName="Click" />
                    <asp:AsyncPostBackTrigger ControlID="XML2delete" EventName="Click" />
                    <asp:AsyncPostBackTrigger ControlID="XML1ListBox" 
                        EventName="SelectedIndexChanged" />
                </Triggers>
            </asp:UpdatePanel>
        </div>
        <div style="width:30%; float:left">
            所在市区<br />
            <asp:TextBox ID="XML3TextBox1" runat="server" Width="100px"></asp:TextBox>
            <asp:Button ID="XML3change" runat="server" Text="修改"/>
            <br />
            <asp:ListBox ID="XML3ListBox" runat="server" AutoPostBack="True" 
                DataSourceID="XmlDataSource3" DataTextField="name" DataValueField="name" 
                Width="106px" Height="150px"></asp:ListBox>
            <asp:Button ID="XML3delete" runat="server" Text="删除"/>
            <br />
            <asp:TextBox ID="XML3TextBox2" runat="server" Width="100px"></asp:TextBox>
            <asp:Button ID="XML3add" runat="server" Text="添加" />
            <asp:XmlDataSource ID="XmlDataSource3" runat="server" DataFile="~/Citys.xml" 
                XPath="所在省份/所在地区"></asp:XmlDataSource>
        </div>    </div>
        </form>
    </body>
    </html>
      

  2.   

    2、后台:using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Xml;
    using System.Linq;
    using System.Xml.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                XML1db();
                XML2db();
                XML3db();
            }
        }
        public void XML1db()
        {
            XML1ListBox.Items.Clear();
            XML1ListBox.DataBind();
        }    public void XML2db()
        {
            XML2ListBox.Items.Clear();
            XmlDataSource2.DataFile = "~/Citys.xml";
            if (XML1ListBox.SelectedValue != "")
            {
                XmlDataSource2.XPath = "所在省份/所在地区[@name='" + XML1ListBox.SelectedValue.ToString() + "']/所在市县";
            }
            else
            {
                XmlDataSource2.XPath = "所在省份/所在地区[@name='请选择']/所在市县";
            }        XML2ListBox.DataBind();
        }    public void XML3db()
        {        XML3ListBox.Items.Clear();
            XmlDataSource3.DataFile = "~/Citys.xml";
            if (XML2ListBox.SelectedValue != "")
            {
                XmlDataSource3.XPath = "所在省份/所在地区/所在市县[@name='" + XML2ListBox.SelectedValue.ToString() + "']/所在市区";
            }
            else
            {
                XmlDataSource3.XPath = "所在省份/所在地区/所在市县[@name='请选择']/所在市区";
            }
            XML3ListBox.DataSourceID = "XmlDataSource3";
            XML3ListBox.DataTextField = "name";
            XML3ListBox.DataBind();
        }    protected void XML1ListBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            XML1TextBox1.Text = XML1ListBox.SelectedValue.ToString();
            XML2db();
        }
        protected void XML2ListBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            XML2TextBox1.Text = XML2ListBox.SelectedValue.ToString();
            XML3db();
        }
        protected void XML1change_Click(object sender, EventArgs e)
        {
            XmlDocument xd = new XmlDocument();
            xd.Load(Server.MapPath("~/Citys.xml"));
            XmlNodeList Lv1xnl = xd.SelectSingleNode("所在省份").SelectNodes("所在地区");        foreach (XmlNode Lv1xn in Lv1xnl)
            {
                if (Lv1xn.Attributes["name"].Value.Equals(XML1ListBox.SelectedValue.ToString()))
                {
                    Lv1xn.Attributes["name"].Value = XML1TextBox1.Text.ToString();
                }
            }        xd.Save(Server.MapPath("~/Citys.xml"));
            XML1db();    }    protected void XML2change_Click(object sender, EventArgs e)
        {
            XmlDocument xd = new XmlDocument();
            xd.Load(Server.MapPath("~/Citys.xml"));
            XmlNodeList Lv1xnl = xd.SelectSingleNode("所在省份").SelectNodes("所在地区");        foreach (XmlNode Lv1xn in Lv1xnl)
            {
                if (Lv1xn.Attributes["name"].Value.Equals(XML1ListBox.SelectedValue.ToString()))
                {
                    XmlNodeList Lv2xnl = Lv1xn.SelectNodes("所在市县");                if (XML2ListBox.SelectedValue != "")
                    {
                        foreach (XmlNode Lv2xn in Lv2xnl)
                        {
                            if (Lv2xn.Attributes["name"].Value.Equals(XML2ListBox.SelectedValue.ToString()))
                            {
                                Lv2xn.Attributes["name"].Value = XML2TextBox1.Text.ToString();
                            }
                        }
                    }
                }
            }        xd.Save(Server.MapPath("~/Citys.xml"));
            XML2db();
        }    protected void XML1delete_Click(object sender, EventArgs e)
        {
            XmlDocument xd = new XmlDocument();
            xd.Load(Server.MapPath("~/Citys.xml"));
            XmlNodeList Lv1xnl = xd.SelectSingleNode("所在省份").SelectNodes("所在地区");        foreach (XmlNode Lv1xn in Lv1xnl)
            {
                if (Lv1xn.Attributes["name"].Value.Equals(XML1ListBox.SelectedValue.ToString()))
                {
                    Lv1xn.Attributes["name"].RemoveAll();
                }
            }        xd.Save(Server.MapPath("~/Citys.xml"));
            XML1db();    }
        protected void XML2delete_Click(object sender, EventArgs e)
        {
            XmlDocument xd = new XmlDocument();
            xd.Load(Server.MapPath("~/Citys.xml"));
            XmlNodeList Lv1xnl = xd.SelectSingleNode("所在省份").SelectNodes("所在地区");        foreach (XmlNode Lv1xn in Lv1xnl)
            {
                if (Lv1xn.Attributes["name"].Value.Equals(XML1ListBox.SelectedValue.ToString()))
                {
                    XmlNodeList Lv2xnl = Lv1xn.SelectNodes("所在市县");                if (XML2ListBox.SelectedValue != "")
                    {
                        foreach (XmlNode Lv2xn in Lv2xnl)
                        {
                            if (Lv2xn.Attributes["name"].Value.Equals(XML2ListBox.SelectedValue.ToString()))
                            {
                                Lv2xn.Attributes["name"].RemoveAll();
                            }
                        }
                    }
                }
            }        xd.Save(Server.MapPath("~/Citys.xml"));
            XML2db();
        }    protected void XML1add_Click(object sender, EventArgs e)
        {
            XmlDocument xd = new XmlDocument();
            xd.Load(Server.MapPath("~/Citys.xml"));
            XmlNodeList Lv1xnl = xd.SelectSingleNode("所在省份").SelectNodes("所在地区");
            XmlElement xe = xd.CreateElement("所在地区");
            xe.SetAttribute("name", XML1TextBox2.Text.ToString());        if (XML1ListBox.SelectedValue == "")
            {
                xd.SelectSingleNode("所在省份").AppendChild(xe);
            }
            else
            {
                foreach (XmlNode Lv1xn in Lv1xnl)
                {
                    if (Lv1xn.Attributes["name"].Value.Equals(XML1ListBox.SelectedValue.ToString()))
                    {
                        XmlNode xn = (XmlNode)Lv1xn;                    xd.SelectSingleNode("所在省份").InsertAfter(xe, xd);                }
                }
            }        xd.Save(Server.MapPath("~/Citys.xml"));
            XML1db();
        }    protected void XML2add_Click(object sender, EventArgs e)
        {        XmlDocument xd = new XmlDocument();
            xd.Load(Server.MapPath("~/Citys.xml"));
            XmlNodeList Lv1xnl = xd.SelectSingleNode("所在省份").SelectNodes("所在地区");        foreach (XmlNode Lv1xn in Lv1xnl)
            {
                if (Lv1xn.Attributes["name"].Value.Equals(XML1ListBox.SelectedValue.ToString()))
                {
                    XmlNodeList Lv2xnl = Lv1xn.SelectNodes("所在市县");
                    XmlElement xe = xd.CreateElement("所在市县");
                    xe.SetAttribute("name", XML2TextBox2.Text.ToString());                if (XML2ListBox.SelectedValue == "")
                    {
                        Lv1xn.AppendChild(xe);
                    }
                    else
                    {
                        foreach (XmlNode Lv2xn in Lv2xnl)
                        {
                            if (Lv2xn.Attributes["name"].Value.Equals(XML2ListBox.SelectedValue.ToString()))
                            {
                                XmlNode xn = (XmlNode)Lv2xn;
                                Lv1xn.InsertAfter(xe, xn);
                            }
                        }
                    }
                }
            }        xd.Save(Server.MapPath("~/Citys.xml"));
            XML2db();
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
        }
    }3、XML:<?xml version="1.0" encoding="utf-8"?>
    <所在省份>
      <所在地区 name="请选择">
        <所在市县 name="请选择">
          <所在市区 name="请选择" />
        </所在市县>
      </所在地区>
      <所在地区 name="长春地区">
        <所在市县 name="长春市本级">
          <所在市区 name="南关" />
        </所在市县>
        <所在市县 name="九台">
          <所在市区 name="南关" />
        </所在市县>
        <所在市县 name="榆树">
          <所在市区 name="南关" />
        </所在市县>
        <所在市县 name="德惠">
          <所在市区 name="南关" />
        </所在市县>
        <所在市县 name="农安">
          <所在市区 name="南关" />
        </所在市县>
      </所在地区>
      <所在地区 name="吉林地区">
        <所在市县 name="吉林市本级">
          <所在市区 name="松北二区" />
        </所在市县>
        <所在市县 name="舒兰" />
        <所在市县 name="永吉" />
        <所在市县 name="111" />
      </所在地区>
      <所在地区 name="四平地区111">
      </所在地区>
      <所在地区 name="辽源地区">
      </所在地区>
      <所在地区 name="松原地区">
      </所在地区>
      <所在地区 name="白城地区">
      </所在地区>
      <所在地区 name="延边州地区">
      </所在地区>
      <所在地区 name="长白山管委会" />
      <所在地区 name="通化地区" />
    </所在省份>
      平台环境:我用的VS2010,在windowxp上做的调试,已经把代码独立出来了,各位只要新建个页,把代码贴进去,并改一下XML的文件名就能运行了,如能解决,不胜感激!大家主要看updatepanel 1 里的内容就行,代码里都叫XML1什么什么。
      

  3.   

    我把代码简化了一下,重贴一遍:
    1、前台:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>    <div style="width:30%; float:left">
            <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional">
                <ContentTemplate>
                    所在地区<br />
                    <asp:TextBox ID="XML1TextBox1" runat="server" Width="100px"></asp:TextBox>
                    <asp:Button ID="XML1change" runat="server" Text="修改" OnClick="XML1change_Click" />
                    <br />
                    <asp:ListBox ID="XML1ListBox" runat="server" AutoPostBack="True"                 
                        Width="106px" Height="150px" 
                        onselectedindexchanged="XML1ListBox_SelectedIndexChanged" 
                        DataSourceID="XmlDataSource1" DataTextField="name" DataValueField="name"></asp:ListBox>
                    <asp:Button ID="XML1delete" runat="server" Text="删除" onclick="XML1delete_Click"/>
                    <br />
                    <asp:TextBox ID="XML1TextBox2" runat="server" Width="100px"></asp:TextBox>
                    <asp:Button ID="XML1add" runat="server" Text="添加" onclick="XML1add_Click" 
                        PostBackUrl="~/XMLs/SetXMLs.aspx" />                
                    <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/Citys.xml" 
                        XPath="所在省份/所在地区"></asp:XmlDataSource>                
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="XML1add" EventName="Click" />
                    <asp:AsyncPostBackTrigger ControlID="XML1change" EventName="Click" />
                    <asp:AsyncPostBackTrigger ControlID="XML1delete" EventName="Click" />
                    <asp:AsyncPostBackTrigger ControlID="XML1ListBox" 
                        EventName="SelectedIndexChanged" />
                </Triggers>
            </asp:UpdatePanel>
        </div>    </div>
        </form>
    </body>
    </html>2、后台:
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Xml;
    using System.Linq;
    using System.Xml.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                XML1db();
            }
        }
        public void XML1db()
        {
            XML1ListBox.Items.Clear();
            XML1ListBox.DataBind();
        }
        protected void XML1ListBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            XML1TextBox1.Text = XML1ListBox.SelectedValue.ToString();    }    protected void XML1change_Click(object sender, EventArgs e)
        {
            XmlDocument xd = new XmlDocument();
            xd.Load(Server.MapPath("~/Citys.xml"));
            XmlNodeList Lv1xnl = xd.SelectSingleNode("所在省份").SelectNodes("所在地区");        foreach (XmlNode Lv1xn in Lv1xnl)
            {
                if (Lv1xn.Attributes["name"].Value.Equals(XML1ListBox.SelectedValue.ToString()))
                {
                    Lv1xn.Attributes["name"].Value = XML1TextBox1.Text.ToString();
                }
            }        xd.Save(Server.MapPath("~/Citys.xml"));
            XML1db();    }    protected void XML1delete_Click(object sender, EventArgs e)
        {
            XmlDocument xd = new XmlDocument();
            xd.Load(Server.MapPath("~/Citys.xml"));
            XmlNodeList Lv1xnl = xd.SelectSingleNode("所在省份").SelectNodes("所在地区");        foreach (XmlNode Lv1xn in Lv1xnl)
            {
                if (Lv1xn.Attributes["name"].Value.Equals(XML1ListBox.SelectedValue.ToString()))
                {
                    Lv1xn.Attributes["name"].RemoveAll();
                }
            }        xd.Save(Server.MapPath("~/Citys.xml"));
            XML1db();    }
         protected void XML1add_Click(object sender, EventArgs e)
        {
            XmlDocument xd = new XmlDocument();
            xd.Load(Server.MapPath("~/Citys.xml"));
            XmlNodeList Lv1xnl = xd.SelectSingleNode("所在省份").SelectNodes("所在地区");
            XmlElement xe = xd.CreateElement("所在地区");
            xe.SetAttribute("name", XML1TextBox2.Text.ToString());        if (XML1ListBox.SelectedValue == "")
            {
                xd.SelectSingleNode("所在省份").AppendChild(xe);
            }
            else
            {
                foreach (XmlNode Lv1xn in Lv1xnl)
                {
                    if (Lv1xn.Attributes["name"].Value.Equals(XML1ListBox.SelectedValue.ToString()))
                    {
                        XmlNode xn = (XmlNode)Lv1xn;                    xd.SelectSingleNode("所在省份").InsertAfter(xe, xd);                }
                }
            }        xd.Save(Server.MapPath("~/Citys.xml"));
            XML1db();
        }
    }3、XML:
    <?xml version="1.0" encoding="utf-8"?>
    <所在省份>
      <所在地区 name="请选择">
        <所在市县 name="请选择">
          <所在市区 name="请选择" />
        </所在市县>
      </所在地区>
      <所在地区 name="长春地区">
        <所在市县 name="长春市本级">
          <所在市区 name="南关" />
        </所在市县>
        <所在市县 name="九台">
          <所在市区 name="南关" />
        </所在市县>
        <所在市县 name="榆树">
          <所在市区 name="南关" />
        </所在市县>
        <所在市县 name="德惠">
          <所在市区 name="南关" />
        </所在市县>
        <所在市县 name="农安">
          <所在市区 name="南关" />
        </所在市县>
      </所在地区>
      <所在地区 name="吉林地区">
        <所在市县 name="吉林市本级">
          <所在市区 name="松北二区" />
        </所在市县>
        <所在市县 name="舒兰" />
        <所在市县 name="永吉" />
        <所在市县 name="111" />
      </所在地区>
      <所在地区 name="四平地区">
      </所在地区>
      <所在地区 name="辽源地区">
      </所在地区>
      <所在地区 name="松原地区">
      </所在地区>
      <所在地区 name="白城地区">
      </所在地区>
      <所在地区 name="延边州地区">
      </所在地区>
      <所在地区 name="长白山管委会" />
      <所在地区 name="通化地区" />
    </所在省份>
      

  4.   

    你调式一下。。是不是对XML的修改时有缓存的问题?你帖的代码太杂了。。看的头晕
      

  5.   


    我自学成才的,好多事情不懂,刚才上网又查了下,如果是XML需要加随机数,请问我空间引用的xml文件,怎么加随机数啊?
      

  6.   

    是在这里加么?"XmlDataSource1.DataFile = "~/Citys.xml";"
    具体代码是什么,能帮忙写一下么?
      

  7.   

    更新,修改完dropdownlist再绑定一下!!
    即再执行
    DropDownlist1.DataBind();
    DropDownlist2.DataBind();
      

  8.   

    我现在用这个命令读取和保存xml:
    xd.Load(Server.MapPath("~/Citys.xml?=" + DateTime.Now.ToString()));
     xd.Save(Server.MapPath("~/Citys.xml?=" + DateTime.Now.ToString()));
    但是提示“Illegal characters in path.”
    估计是写的不对,请各位看看应该怎么写啊,是在这个环节加随机数呢,还是在dropdownlist绑定的时候改datafile的路径呢?
      

  9.   

    恩。我试过加参数了,发现有个问题很郁闷,就是用户选择过的dropdownlist里的内容都要刷新,这跟我用updatepanel的初衷相违,我现在可能得去缓存了,不过方法有人提供么?
      

  10.   

    这贴分看来得我自己拿了!我找到了一个无敌简单又方便的办法!
    既不会刷新页面,也不需要去缓存。
    为什么第二次点击会刷新结果呢?这说明dropdownlist并不总是读取的旧的XML,在某个环节,它肯定调用了新的XML到缓存里。这个步骤就是:
            xd.Save(Server.MapPath("~/Citys.xml")); !!!!!!!!!!!!!!
    也就是说,在重新给dropdownlist绑定数据之前,重新开一下xml就行了!就是这样:
            xd.Save(Server.MapPath("~/Citys.xml"));
            xd.Load(Server.MapPath("~/Citys.xml"));
            xd.Load(Server.MapPath("~/Citys.xml"));
            XML1db();
    然后就皆大欢喜了!!!!我太他妈聪明了!
      

  11.   

    哎呀,一着急贴错了,关键步骤是xd.Load(Server.MapPath("~/Citys.xml"));,不是
    xd.Save(Server.MapPath("~/Citys.xml"));呵呵。
      

  12.   

    不行就开两遍,绝对管用:
            xd.Save(Server.MapPath("~/Citys.xml"));
            xd.Load(Server.MapPath("~/Citys.xml"));
            xd.Save(Server.MapPath("~/Citys.xml"));
            xd.Load(Server.MapPath("~/Citys.xml"));
            XML2db();