Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网站建设 > ASP > 用DropDownList控件绑定XML数据实现省市区三级联动
【标  题】:用DropDownList控件绑定XML数据实现省市区三级联动
【关键字】:DropDownList,XML
【来  源】:http://blog.csdn.net/ddafei/archive/2007/04/17/1567926.aspx

用DropDownList控件绑定XML数据实现省市区三级联动

Your Ad Here

用DropDownList控件绑定XML数据实现省市区三级联动(需要用到VS2005的AJAX1.0),此方法仅用于学习讨论.
主要目的是学习使用调用XML数据及用数组存储绑定DataView数据源返回所选字段唯一值.

City.xml文件格式:

<?xml version="1.0" encoding="utf-8"?>
<PCitys>
  <Provinces>
    <Province>北京市</Province>
    <City>北京市</City>
    <County>东城</County>
  </Provinces>
  <Provinces>
    <Province>北京市</Province>
    <City>北京市</City>
    <County>西城</County>
  </Provinces>
  <Provinces>
    <Province>北京市</Province>
    <City>北京市</City>
    <County>崇文</County>
  </Provinces>
  <Provinces>
    <Province>北京市</Province>
    <City>北京市</City>
    <County>宣武</County>
  </Provinces>
  <Provinces>
    <Province>北京市</Province>
    <City>北京市</City>
    <County>朝阳</County>
  </Provinces>
  <Provinces>
    <Province>北京市</Province>
    <City>北京市</City>
    <County>丰台</County>
  </Provinces>
  <Provinces>
</PCitys> 

前台显示代码(VS2005的AJAX1.0实现无刷新调数据):

<asp:ScriptManager id="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="upPCC" runat="server">
                <ContentTemplate>
                <asp:DropDownList ID="ddlProvince" runat="server" AppendDataBoundItems="True" AutoPostBack="True"
                    OnSelectedIndexChanged="ddlProvince_SelectedIndexChanged">
                    <asp:ListItem Selected="True" Value="选择省份">选择省份</asp:ListItem>
                </asp:DropDownList>
                &nbsp;
                <asp:DropDownList ID="ddlCity" runat="server" AppendDataBoundItems="True" AutoPostBack="True"
                    OnSelectedIndexChanged="ddlCity_SelectedIndexChanged">
                    <asp:ListItem Selected="True" Value="选择城市">选择城市</asp:ListItem>
                </asp:DropDownList>
                <asp:DropDownList ID="ddlCounty" runat="server" AppendDataBoundItems="True">
                    <asp:ListItem Selected="True" Value="选择市区">选择市区</asp:ListItem>
                </asp:DropDownList></ContentTemplate></asp:UpdatePanel>

后台代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class EmployeeAdd : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ProvinceFill();
            CityFill();
            CountyFill();
        }
    }
    /// <summary>
    /// 用数组存储绑定DataView数据源返回所选字段唯一值
    /// </summary>
    /// <param name="dv">DataView视图</param>
    /// <param name="al">数组参数</param>
    /// <param name="column_name">筛选字段</param>
    /// <returns>返回column_name唯一值</returns>
    private ArrayList GetDistinctData(ref DataView dv, ref ArrayList al, string column_name)
    {
        bool existed = false;

        foreach (DataRowView dr in dv)
        {
            existed = false;

            for (int i = 0; i < al.Count; i++)
            {
                if (dr[column_name].ToString() == al[i].ToString())
                {
                    existed = true;
                }
            }

            if (existed == false)
            {
                al.Add(dr[column_name]);
            }
        }

        return al;
    }

    /// <summary>
    ///绑定省市数据到控件
    /// </summary>
    protected void ProvinceFill()
    {
        //清空省市选项
        ddlProvince.Items.Clear();
        DataSet ds = new DataSet("Cities");
        ds.Clear();
        ds.ReadXml(Server.MapPath("..\\App_Data\\Citys.xml"));
        DataTable dt = ds.Tables[0];
        DataView pdv = new DataView(dt);
        ArrayList pal = new ArrayList();
        GetDistinctData(ref pdv, ref pal, "Province");
        ddlProvince.DataSource = pal;
        ddlProvince.DataBind();
    }
    /// <summary>
    /// 绑定所选省市下的城市或地区到控件
    /// </summary>
    protected void CityFill()
    {//清空城市地区选项
        ddlCity.Items.Clear();

        DataSet ds = new DataSet("Cities");
        ds.Clear();
        ds.ReadXml(Server.MapPath("..\\App_Data\\Citys.xml"));
        DataTable dt = ds.Tables[0];
        DataView cdv = new DataView(dt);
        cdv.RowFilter = "Province='" + ddlProvince.SelectedItem.Text + "'";
        ArrayList cal = new ArrayList();
        GetDistinctData(ref cdv, ref cal, "City");
        ddlCity.DataSource = cal;
        ddlCity.DataBind();

    }
    /// <summary>
    /// 绑定数据到所选城市或地区管辖下的县市到控件
    /// </summary>
    protected void CountyFill()
    {
        //清空市县选项
        ddlCounty.Items.Clear();
        DataSet ds = new DataSet("Cities");
        ds.Clear();
        ds.ReadXml(Server.MapPath("..\\App_Data\\Citys.xml"));
        DataTable dt = ds.Tables[0];
        DataView ctdv = new DataView(dt);
        ctdv.RowFilter = "Province='" + ddlProvince.SelectedItem.Text + "' and City='" + ddlCity.SelectedItem.Text + "'";
        ArrayList ctal = new ArrayList();
        GetDistinctData(ref ctdv, ref ctal, "County");
        ddlCounty.DataSource = ctal;
        ddlCounty.DataBind();

    }
    protected void ddlProvince_SelectedIndexChanged(object sender, EventArgs e)
    {
        CityFill();
        CountyFill();
    }
    protected void ddlCity_SelectedIndexChanged(object sender, EventArgs e)
    {
        CountyFill();
    }
}

刚学.NET,此方法仅用于学习.如有好方法请多多指教.谢谢!

.NET Petshop详解:【上一篇】
ASP.NET AJAX入门系列(TerryLee's Tech Space):【下一篇】
【相关文章】
  • CarlosAg.ExcelXmlWriter实现.net下Excel导出功能(服务端不需要安装Excel程序)
  • [翻译]xml的加密和解密
  • XML注释导致VS2005崩溃
  • Berkeley DB XML入门
  • msxml2.FreeThreadedDOMDocument.3.0是什么意思
  • 通过编程简单地将XML文档数据导入到SQL Server数据库中
  • 如何解决用XmlSerializer序列化和反序列化一个类, 保存到UTF-8的XML中. 产生的换行符丢失的问题
  • DropDownList与GridView
  • 利用Asp.net Ajax异步获取xml文档内容
  • 用jdom生成普通xml格式与生成SOAP所需要的xml格式 实例
  • 【随机文章】
  • sed用法
  • 改注册表加快网络速度
  • PHP 中执行系统外部命令
  • do{}while(FALSE)知多少
  • FAT12 学习.
  • 网页常用小巧按钮--渐变按纽
  • Struts+Spring+Hibernate上传下载 --之一
  • PGP论坛开始启用(pgp.sourceforge.net/forum)
  • 保护局域网网关
  • 我对hao123 网站分析
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.