您的位置:首页 > 编程语言 > ASP

Asp.net三级联动DropDownList C# 下

2020-03-05 12:47 941 查看

上篇的三级联动我们所用的方法是分别绑定省市县,然后当数据发生改变的时候再去调用相关的方法。
这样呢我们在每次绑定时都要进行一次数据读取,这个省市县的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 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: