• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

使用XMLDataSource简单实现多级下拉菜单_xml

xml 搞代码 7年前 (2018-06-15) 174次浏览 已收录 0个评论

  一年没有使用.NET, 以至于开始怀疑自己转变成Delphi程序员了。年初接到的项目,忙到九月份,稀稀拉拉的又到了元旦。一年的时间,变化的太多。VS.2005发布了,.NET framework也升级到了2.0,变化太多,微软又再变,什么时候才能稳定下来?这个速度,像我们这样的小Coder怎么跟的上啊。

      ADP.NET 2.0 provides several distinct data source objects that are used to construct a common interface framework for data-bound controls. accessDataSource,SqlDataSource,ObjectDataSource,DataSetDataSource,xmlDataSource.

     和Delphi的RAD差不多了,几个控件拖进来,属性中设定一下,数据Data Access就OK了。Data-Driven web Application 的开发也如此这般,这般如此,呵呵。

     废话不多说了,回到题目。以前用asp的时候写过多级关联的下拉菜单,比如大类别、小类别,选择省份、显示城市等,那时候要用JavaScript写个函数,论效率应该比XMLDataSource高,页面也不用返回服务器。今天把省份城市乡镇写成XML,用XMLDataSource绑定asp:DropDownList为了尝尝鲜。

    我这中间还有个插曲。在网上找了很长时间,都没有找到。竟然没有中国省份城市的XML文档,我晕,难道我自己写啊,省份31个,下面的城市,县城??。最后找到国家统计局的网站,有2005最新的行政划分,只有html格式的,用XSL转?还不会(别鄙视,那个网页也很不标准)。保存成文本,一行行改?太累了。找个工具吧?txt2xml?开源社区有一个,好不容易找到链接down下来,发现必须装JDK。MD,就没有个exe程序啊!面对那3000多行的文本,我怎么整理成XML啊,郁闷。当时就想,我要是开发个简单的txt2xml或许也能火起来,哈哈,不错的工具。或许很有难度的说。此事日后再议!

     1. 有自己的XML了。格式如下:

   <?xml version=”1.0″ encoding=”utf-8″ standalone=”yes” ?>
<China>
  <Province Name=”北京市” PostalCode=”110000″>
    <City Name=”市辖区” PostalCode=”110100″>
      <county Name=”东城区” PostalCode=”110101″/>
      <county Name=”西城区” PostalCode=”110102″/>

http://www.gaodaima.com/33926.html使用XMLDataSource简单实现多级下拉菜单_xml

      <county Name=”崇文区” PostalCode=”110103″/>
      ……….
      <county Name=”怀柔区” PostalCode=”110116″/>
      <county Name=”平谷区” PostalCode=”110117″/>
    </City>
    <City Name=”县” PostalCode=”110200″>
      <county Name=”密云县” PostalCode=”110228″/>
      <county Name=”延庆县” PostalCode=”110229″/>
    </City>
  </Province>
  <Province Name=”天津市” PostalCode=”120000″>
    <City Name=”市辖区” PostalCode=”120100″>
      <county Name=”和平区” PostalCode=”120101″/>
     ………..
      <county Name=”西青区” PostalCode=”120111″/>
      <county Name=”津南区” PostalCode=”120112″/>
      <county Name=”北辰区” PostalCode=”120113″/>
      <county Name=”武清区” PostalCode=”120114″/>
      <county Name=”宝坻区” PostalCode=”120115″/>
    </City>
    <City Name=”县” PostalCode=”120200″>
      <county Name=”宁河县” PostalCode=”120221″/>
      <county Name=”静海县” PostalCode=”120223″/>
      <county Name=”蓟县” PostalCode=”120225″/>
    </City>
  </Province>
</China>

2. 建立三个DropDownList (AutoPostBack为True)和三个XmlDataSource ,省份列表直接绑定即可。

    <form id=”form1″ runat=”server”>
    <div>
        <label>省  份</label>
        <asp:DropDownList ID=”Provinces” runat=”server” DataSourceID=”ProvinceList” DataTextField=”Name” DataValueField=”PostalCode” OnSelectedIndexChanged=”Provinces_SelectedIndexChanged” AutoPostBack=”True”>
        </asp:DropDownList><asp:XmlDataSource ID=”ProvinceList” runat=”server” DataFile=”~/incxml/State.xml”
            XPath=”China/Province”></asp:XmlDataSource>
        <label>城  市</label>
        <asp:DropDownList ID=”Cities” runat=”server” AutoPostBack=”True” OnSelectedIndexChanged=”Cities_SelectedIndexChanged”>
        </asp:DropDownList><asp:XmlDataSource ID=”CityList” runat=”server” DataFile=”~/incxml/State.xml”
            XPath=”China/Province/City”></asp:XmlDataSource>
        <label>区  县</label>
        <asp:DropDownList ID=”County” runat=”server”>
        </asp:DropDownList><asp:XmlDataSource ID=”CountyList” runat=”server” DataFile=”~/incxml/State.xml”
            XPath=”China/Province/City/county”></asp:XmlDataSource>
    </div>
    </form>

3。省份和城市列表的OnSelectedIndexChanged事件,指定相应列表的DataSourceID属性即可,同时把相应的XMLDataSource的XPath属性更改

    protected void Provinces_SelectedIndexChanged(object sender, EventArgs e)
    {
        CityList.XPath = “China/Province[@PostalCode=” + Provinces.SelectedValue + “]/City”;
        Cities.DataSourceID = “CityList”;
        Cities.DataTextField = “Name”;
        Cities.DataValueField = “PostalCode”;
    }
    protected void Cities_SelectedIndexChanged(object sender, EventArgs e)
    {
        CountyList.XPath = “China/Province[@PostalCode=” + Provinces.SelectedValue + “]/City[@PostalCode=” + Cities.SelectedValue + “]/county”;
        County.DataSourceID = “CountyList”;
        County.DataTextField = “Name”;
        County.DataValueField = “PostalCode”;
    }

欢迎大家阅读《使用XMLDataSource简单实现多级下拉菜单_xml》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用XMLDataSource简单实现多级下拉菜单_xml

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址