<?xml version="1.0" encoding="utf-8"?>
<Provinces>
  <Province Code="110000" Name="北京市">
    <City Code="110100" Name="北京"></City>
  </Province>
  <Province Code="120000" Name="天津市">
    <City Code="120100" Name="天津"></City>
  </Province>
</Provinces>
我想实现的效果是用双Repeater的方式,先读出省份,然后在通过省份名称显示出城市的名称。。
我用第一个Repeater已经可以把省份的内容已经读取出来了。
            string dataFile = Server.MapPath("City.xml");
            DataSet ds = new DataSet();
            ds.ReadXml(dataFile);            DataView pp = new DataView(ds.Tables[0]);            this.City_Sheng.DataSource = pp;
            this.City_Sheng.DataBind();但是读相应的城市的时候,就不知道应该怎么写了。请大家给个思路。。
把DataView pp = new DataView(ds.Tables[0]);改成DataView pp = new DataView(ds.Tables[1]);可以得到全部的城市,但没有区分。

解决方案 »

  1.   

    ds.Tables[0]是省表ds.Tables[1]是市表它们是父子关系可以通过Province_Id列关联,这列是系统自动生成的两个表里面内容是这样的
    Province
    Province_Id     Code    Name
    0              110000  北京市
    1              120000  天津市City
    Code    Name    Province_Id
    110100  北京     0
    120100  天津     1 
      

  2.   

    真巧,貌似用的XML文件都是一个~
    给你个例子吧,两个方法,看看有没有帮助的~private void Province_view(string CurrentPath, DropDownList DDL_Province)
        {
            
            if (!Page.IsPostBack)
            {
                if (System.IO.File.Exists(CurrentPath))
                {
                    DDL_Province.Items.Clear();                System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
                    doc.Load(CurrentPath);                XmlNodeList nodes = doc.DocumentElement.ChildNodes;                XmlNode node1 = doc.DocumentElement.SelectSingleNode(@"Province/City[@Code='" + this.City + "']");                foreach (XmlNode node in nodes)
                    {
                        DDL_Province.Items.Add(new ListItem(node.Attributes["Name"].Value, node.Attributes["Code"].Value));
                        int n = DDL_Province.Items.Count - 1;                    if (node1 != null && node == node1.ParentNode)
                            DDL_Province.SelectedIndex = n;
                    }
                }
                else
                {
                    this.LabelMessage.Text = "地市信息文件丢失!";
                }
            }
        }    private void City_view(string CurrentPath, DropDownList province,DropDownList city)
        {
            if (System.IO.File.Exists(CurrentPath))
            {
                city.Items.Clear();            System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
                doc.Load(CurrentPath);            XmlNodeList nodes = doc.DocumentElement.ChildNodes[province.SelectedIndex].ChildNodes;            foreach (XmlNode node in nodes)
                {
                    city.Items.Add(new ListItem(node.Attributes["Name"].Value, node.Attributes["Code"].Value));
                    int n = city.Items.Count - 1;
                    if (Int32.Parse(node.Attributes["Code"].Value) == this.City)
                    {
                        city.SelectedIndex = n;
                    }
                }            if (city.SelectedIndex == -1)
                    city.SelectedIndex = 0;
            }
            else
            {
                this.LabelMessage.Text = "地市信息文件丢失!";
            }
        }
      

  3.   

    页面最上面初始化一个int City = 110100,得到默认的城市~你想默认哪个就写哪个的编码~Page_Load的时候把路径写进去~
    CurrentPath = this.Server.MapPath(".") + "\\include\\Province.xml";
    Province_view(CurrentPath,DDL_Agent_Province);Province_SelectedIndexChanged的时候执行City_view方法~