C# 实现 省市区三级联动(表中包含经纬度取自淘宝地址管理)

来源:互联网 发布:华为 算法工程师 面试 编辑:程序博客网 时间:2024/04/27 14:16

老生常谈,就不用再多介绍省市区三级联动的用处了,直接上效果图:


前台代码:

 <asp:DropDownList ID="seachprov" runat="server" CssClass="span4" AutoPostBack="true" OnSelectedIndexChanged="seachprov_SelectedIndexChanged"></asp:DropDownList> <asp:DropDownList ID="seachcity" runat="server" CssClass="span4" AutoPostBack="true" OnSelectedIndexChanged="seachcity_SelectedIndexChanged"> <asp:ListItem Value="0">请选择</asp:ListItem></asp:DropDownList> <asp:DropDownList ID="seachdistrict" runat="server" CssClass="span4">  <asp:ListItem Value="0">请选择</asp:ListItem></asp:DropDownList>

后台C#代码:

    protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                     BindCityArea("0", seachprov);//初始化代码绑定省份                    if (!string.IsNullOrEmpty(getCookies["ClientTel"]))                    {                        this.BindShowUpInfo(getCookies["ClientTel"]);                    }            }        }        //编辑是如何在绑定省市区显示        public void BindShowUpInfo(string strUpid)        {            if (!string.IsNullOrEmpty(strUpid))            {                    using (EastAgricultureDataContext db = new EastAgricultureDataContext())                    {                        UserInfo getNot = db.UserInfo.Single(x => x.tel ==strUpid);                        var area = getNot.areacity.Split(' ');                        if (area.Length > 0)                        {                            seachprov.Items.FindByText(area[0]).Selected = true;                            //var getCity = (from p in db.areas where p.parentid == db.areas.Single(x => x.areaname == area[1]).parentid select new { p.id, p.areaname }).ToList();                            //seachcity.DataTextField = "areaname";                            //seachcity.DataValueField = "id";                            //seachcity.DataSource = getCity;                            //seachcity.DataBind(); seachcity.Items.Insert(0, new ListItem("请选择"));                            BindCityArea(db.areas.Single(x => x.areaname == area[1]).parentid, seachcity);                            seachcity.Items.FindByText(area[1]).Selected = true;                            //var getDis = (from p in db.areas where p.parentid==db.areas.Single(x => x.areaname == area[1]).id     select new { p.id, p.areaname }).ToList();                            //seachdistrict.DataTextField = "areaname";                            //seachdistrict.DataValueField = "id";                            //seachdistrict.DataSource = getDis;                            //seachdistrict.DataBind(); seachdistrict.Items.Insert(0, new ListItem("请选择"));                            BindCityArea(db.areas.Single(x => x.areaname == area[1]).id, seachdistrict);                            seachdistrict.Items.FindByText(area[2]).Selected = true;                        }                     }            }        }protected void seachprov_SelectedIndexChanged(object sender, EventArgs e){string pid = seachprov.SelectedItem.Value.Trim();if (pid != "0"){//初始化 市和县级列表//初始化市列表seachcity.Items.Clear(); /*seachdistrict.Items.Clear(); seachdistrict.Items.Insert(0, new ListItem("请选择"));*/using (EastAgricultureDataContext db = new EastAgricultureDataContext()){var getCity = (from p in db.areas where p.parentid == pid select new { p.id, p.areaname }).ToList();if (getCity.Count == 1){seachcity.DataTextField = "areaname";seachcity.DataValueField = "id";seachcity.DataSource = getCity;seachcity.DataBind(); seachcity.Items.Insert(0, new ListItem("请选择"));//var getDis = (from p in db.areas where p.parentid == getCity[0].id select new { p.id, p.areaname }).ToList();//seachdistrict.DataTextField = "areaname";//seachdistrict.DataValueField = "id";//seachdistrict.DataSource = getDis;//seachdistrict.DataBind(); seachdistrict.Items.Insert(0, new ListItem("请选择"));BindCityArea(getCity[0].id, seachdistrict);}else{seachcity.DataTextField = "areaname";seachcity.DataValueField = "id";seachcity.DataSource = getCity;seachcity.DataBind(); seachcity.Items.Insert(0, new ListItem("请选择"));}}}}protected void seachcity_SelectedIndexChanged(object sender, EventArgs e){string pid = seachcity.SelectedItem.Value.Trim();if (pid != "0"){BindCityArea(pid, seachdistrict);}}/// <summary>/// 共通引用部分 绑定省市区///初始化 市和县级列表///初始化市列表/// </summary>/// <param name="codeid"></param>/// <param name="ddlArea"></param>public void BindCityArea(string codeid, DropDownList ddlArea){ddlArea.Items.Clear();using (EastAgricultureDataContext db = new EastAgricultureDataContext()){var getDis = (from p in db.areas where p.parentid == codeid select new { p.id, p.areaname }).ToList();ddlArea.DataTextField = "areaname";ddlArea.DataValueField = "id";ddlArea.DataSource = getDis;ddlArea.DataBind(); ddlArea.Items.Insert(0, new ListItem("请选择"));}}

SQL表结构及数据:

 -- ------------------------------ Table structure for areas-- ----------------------------DROP TABLE [dbo].[areas]GOCREATE TABLE [dbo].[areas] ([id] nvarchar(10) NULL ,[areaname] nvarchar(100) NULL ,[parentid] nvarchar(10) NULL ,[shortname] nvarchar(50) NULL ,[lng] nvarchar(30) NULL ,[lat] nvarchar(30) NULL ,[level] int NULL ,[position] nvarchar(100) NULL ,[sort] int NULL )GO数据过大另附下载地址:http://download.csdn.net/detail/kongwei521/9427179 


1 0
原创粉丝点击