标题:两个DropDownList联动的问题?
取消只看楼主
airfei
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-4-12
 问题点数:0 回复次数:3 
两个DropDownList联动的问题?

我想做一个二级联动下拉菜单,不要求无刷新,想法是这样的。当我选择第一个中的项的时候,第二个下拉就根据第一个的值去添加。现在的问题是,我选择第一个的时候,就报错,说是id无效,我调试断点了一下,发现当我选择改变第一个的时候,就响应了ddl_areaBig_SelectedIndexChanged()事件,然后我的 this.ddl_areaBig.SelectedValue的就为空了。所以SQL语句就不能执行,造成我的第二个下拉就不能显示值。希望大家帮我解答一下。下面是这两个的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("order.mdb");
OleDbConnection con = new OleDbConnection(strCon);
con.Open();

OleDbDataAdapter oda = new OleDbDataAdapter();
oda.SelectCommand = new OleDbCommand("select distinct id,dealer,areaBig from dealer", con);
DataSet ds = new DataSet();
oda.Fill(ds, "dealer");
try
{

this.ddl_dealer.DataSource = ds.Tables["dealer"].DefaultView;
this.ddl_dealer.DataTextField = "dealer";
this.ddl_dealer.DataValueField = "id";
this.ddl_dealer.DataBind();

this.ddl_areaBig.DataSource = ds.Tables["dealer"].DefaultView;
this.ddl_areaBig.DataTextField = "areaBig";
this.ddl_areaBig.DataValueField = "id";
this.ddl_areaBig.DataBind();

}
catch (Exception ex)
{
//Response.Write(ex);
Response.Write("<script>window.alert('数据读取失败,请稍后再试...');</script>");
}
OleDbDataAdapter odaChild = new OleDbDataAdapter();
odaChild.SelectCommand = new OleDbCommand("select id,areaSmall from dealer where id=" + this.ddl_areaBig.SelectedValue, con);
DataSet dsChlid = new DataSet();
odaChild.Fill(dsChlid, "areaSmall");
foreach (DataRow row in dsChlid.Tables["areaSmall"].Rows)
{
this.ddl_areaSmall.Items.Add(new ListItem(row["areaSmall"].ToString(), row["id"].ToString()));
}
con.Close();
}
}

protected void ddl_areaBig_SelectedIndexChanged(object sender, EventArgs e)
{
this.ddl_areaBig.Items.Clear();
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("order.mdb");
OleDbConnection con = new OleDbConnection(strCon);
con.Open();

OleDbDataAdapter oda = new OleDbDataAdapter();
oda.SelectCommand = new OleDbCommand("select id,areaSmall from dealer where id=" + this.ddl_areaBig.SelectedValue,con);//就是这里页面打开的时候能取到值,当我再次选择第一个下拉列表的时候,他就不能取到值了。
DataSet ds = new DataSet();
oda.Fill(ds,"areaSmall");
foreach(DataRow row in ds.Tables["areaSmall"].Rows)
{
this.ddl_areaSmall.Items.Add(new ListItem(row["areaSmall"].ToString(),row["id"].ToString()));
}
con.Close();

}
谢谢大家!!!

搜索更多相关主题的帖子: DropDownList 
2007-10-30 23:43
airfei
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-4-12
得分:0 

呵呵,是我太粗心了,解决了.
还有个问题希望大家帮忙.
就是我的第一个ddl_areaBig读出的值有重复的,应该是我的表结构有问题.我是这样的,我的只有一个表,两个dropdownlist都是从这个表读数据.这个表录入的时候就打算录入重复的值,但是在读出的时候不想出现重复的值.大家有什么办法?

表结构
id(自动编号) dealer areaBig areaSmall
1 小明 渝中区 解放碑
2 小红 江北区 观音桥
3 小明 渝中区 上清侍
... ... ... ....

就是这样,所以我第一个下拉列表读出的 areaBig就有重复的值,我的原意是想选择下拉列表ddl_areaBig读出areaBig,然后根据第一个去读出第二个.如第一个选择渝中区,第二个就显示解放碑和上清侍.麻烦大家帮我看看.谢谢

2007-10-31 09:05
airfei
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-4-12
得分:0 
我加了的.不行.
select distinct id,dealer,areaBig from dealer
他根本没有去掉重复的,
我的ID是自动编号的.这个没有影响吧
2007-10-31 10:08
airfei
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-4-12
得分:0 
学习了,谢谢!!!!
2007-10-31 12:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-182138-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.157420 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved