上篇的三级联动我们所用的方法是分别绑定省市县,然后当数据发生改变的时候再去调用相关的方法。
这样呢我们在每次绑定时都要进行一次数据读取,这个省市县的txt还好说,一旦读取的数据量大,显然这样做并不好。
所以我想的是在一开始先新设一个List列表,在Page_load把数据存进列表里,并且把省的数据读出来,接着就可以写ddl_City.SelectedIndexChanged和ddl_Area.SelectedIndexChanged了。
方法跟上篇的一样,根据编号判断。
using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.IO;public partial class _Default : System.Web.UI.Page{public List<string> Add = new List<string>();protected void Page_Load(object sender, EventArgs e){string path = Server.MapPath(\"sheng.txt\");StreamReader sr = new StreamReader(path);string address;while ((address = sr.ReadLine()) != null){Add.Add(address);}if(!IsPostBack){foreach (string temp in Add){string[] list = temp.Split(\'\\t\');int s = Convert.ToInt32(list[0]);if (list[0].Substring(2, 4) == \"0000\" && s % 1000 == 0){ddl_Province.Items.Add(list[1]);this.ddl_Province_SelectedIndexChanged(new object(), new EventArgs());this.ddl_City_SelectedIndexChanged(new object(), new EventArgs());}}}}protected void ddl_Province_SelectedIndexChanged(object sender, EventArgs e){ddl_City.Items.Clear();ddl_Area.Items.Clear();string fisrt2 = ddl_Province.SelectedValue;foreach (string temp in Add){string[] list = temp.Split(\'\\t\');int s = Convert.ToInt32(list[0]);if (list[1] == fisrt2 && s % 100 == 0){ddl_City.Items.Add(list[2]);}}}protected void ddl_City_SelectedIndexChanged(object sender, EventArgs e){ddl_Area.Items.Clear();string fisrt2 = ddl_Province.SelectedValue;string first4 = ddl_City.SelectedValue;foreach (string temp in Add){string[] list = temp.Split(\'\\t\');int s = Convert.ToInt32(list[0]);if (list[1] == fisrt2){if (list[2] == first4){ddl_Area.Items.Add(list[3]);}}}}}
说明一下
if (list[0].Substring(2, 4) == \"0000\" && s % 1000 == 0){ddl_Province.Items.Add(list[1]);this.ddl_Province_SelectedIndexChanged(new object(), new EventArgs());this.ddl_City_SelectedIndexChanged(new object(), new EventArgs());}
这个地方加一个this.ddl_Province_SelectedIndexChanged(new object(), new EventArgs());
是为了让它在Page_load时便讲省份和城市的数据加载好。
否则页面加载完成后,省份那是出现了北京,但是市区那栏点开却不会显示北京的下辖区。
然后我的博客处子秀就算完成了,以后就分享一些高大上的东西。
- 点赞
- 收藏
- 分享
- 文章举报
卓越的生命c发布了2 篇原创文章 · 获赞 1 · 访问量 91私信关注