使用XMLDataSource简单实现多级下拉菜单
2008-03-26 10:45
701 查看
以前用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"/>
<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>
省份和城市列表的OnSelectedIndexChanged事件,指定相应列表的DataSourceID属性即可,同时把相应的XMLDataSource的XPath属性更改
protected void Provinces_SelectedIndexChanged(object sender, EventArgs e)
protected void Cities_SelectedIndexChanged(object sender, EventArgs e)
我这中间还有个插曲。在网上找了很长时间,都没有找到。竟然没有中国省份城市的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"/>
<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>
省份和城市列表的OnSelectedIndexChanged事件,指定相应列表的DataSourceID属性即可,同时把相应的XMLDataSource的XPath属性更改
protected void Provinces_SelectedIndexChanged(object sender, EventArgs e)
protected void Cities_SelectedIndexChanged(object sender, EventArgs e)
相关文章推荐
- 使用jquery 简单实现下拉菜单
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- 使用jquery 简单实现下拉菜单
- 使用Akka的Actor和Future简单地实现并发处理
- Redis使用总结(3):实现简单的消息队列
- 使用LUCENE快速实现属于自己的英文分词程序——附简单实现
- 使用go channel实现一个简单的信号量
- js简单的使用indexOf实现contains功能
- webx学习总结(一)——使用webx框架实现简单的登录功能
- ajax的简单使用——get&post两种方法的实现(1)
- TPL使用异步编程模型(APM)实现简单网页抓取
- java对象克隆简单实现(可多级克隆)
- Spring--简单使用quartz实现定时作业
- Delphi 环境下使用DirectDraw实现简单的全屏游戏
- dubbo使用经验及实现原理简单介绍(转载)
- 使用slice()简单封装实现将数组分割为几个等长度的子数组
- 使用TensorFlow实现简单的线性回归(LinearRegression)
- 使用System.DirectoryServices.Protocols实现对AD的简单操作
- 使用Nginx的upstream实现简单的1+2负载均衡
- 使用storyboard实现页面跳转,简单的数据传递