ASP.NET dropdownlist的二级联动问题(两数据都来自数据库)

我是想做一个省与市的二级联动dropdownlist,写了两个dropdownlist,分别叫dropdownlist1,dropdownlist2我试过把省的内容写到a... 我是想做一个省与市的二级联动dropdownlist,写了两个dropdownlist,分别叫dropdownlist1,dropdownlist2
我试过把省的内容写到asp:ListItem>XX省</asp:ListItem>
通过下面的触发方法可以使dropdownlist2变化,但如果我把dropdownlist2绑定了数据库中的数据,每次都只能返回第一个值(不管你是选第一个还是最后一个)
我的数据库分两个表一个省表,一个市表,省表province有两个属性pna,pno (省名,省号) 市表city有三个属性cno,cna,pno(市号,市名,省号)

protected void dropdownlist1_SelectedIndexChanged(object sender, EventArgs e)
{
string com = "select CNa from City where PNo in(select PNo from Province where PNa='" + dropdownlist.SelectedValue + "') ";
OdbcCommand myCom = new OdbcCommand(com, conn);
conn.Open();
myData = myCom.ExecuteReader();
this.dropdownlist2.DataSource = myData;
this.dropdownlist2.DataTextField = "CNa";
this.dropdownlist2.DataBind();
conn.Close();
}
我也试过把查询语句的dropdownlist.SelectedValue 改为abc,
string abc = dropdownlist1.Items[dropdownlist1.SelectedIndex].Text.ToString();这样还是不行
请说得详细一点!先谢谢了
展开
 我来答
lotusoxygen
推荐于2018-04-04 · TA获得超过165个赞
知道答主
回答量:73
采纳率:0%
帮助的人:75万
展开全部
呵呵 刚刚做了这个~ 我做的是国家和省份 我就不改代码了哈
给你说的详细一点哈(*^__^*)...
建议你不要直接从方法里写查询数据库的代码!
你一定会获取省和城市的数据吧
比如说 获取到的国家的数据集是cList
获取到省份的是pList
前台:
<asp:DropDownList ID="countryDdl" runat="server" AutoPostBack="True" OnSelectedIndexChanged="countryDdl_SelectedIndexChanged">
</asp:DropDownList>

<asp:DropDownList ID="stateDdl" runat="server">
</asp:DropDownList>

后台:
在页面加载的时候帮他们绑定值
(我看你的代码少绑定了一个哦)
countryDdl.DataSource = cList;
countryDdl.DataTextField = "name";// 页面显示的数据--对应你的省份的名
countryDdl.DataValueField = "id";// 值--对应你的省号
countryDdl.DataBind();
一定要页面加载的时候 两个都绑定哦
然后是联动的效果 countryDdl_SelectedIndexChanged
后台代码:
protected void countryDdl_SelectedIndexChanged(object sender, EventArgs e)
{
// 现获取缩选择的国家的值
string countryStr = countryDdl.SelectedValue;
// 然后重新绑定一下你城市的值而已...


明白了么
说的够仔细吧
累死了~
kid83
2009-06-10 · TA获得超过2081个赞
知道大有可为答主
回答量:1818
采纳率:0%
帮助的人:1985万
展开全部
你的ddl2就不用AutoPostback了,也就是选择改变后不要激发dropdownlist2_SelectedIndexChanged这个事件了.
而且还要看你ddl1是怎么绑定.
注意你是通过PNo查询的,但SelectedValue指的是Value不是Text.所以还要在ddl1设置Value.以下面代码示例设置ddl1
this.dropdownlist2.DataTextField = "CNa";
this.dropdownlist2.DataValueField = "CNo";//
this.dropdownlist2.DataBind();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
QQ2k5
2009-06-12 · TA获得超过438个赞
知道小有建树答主
回答量:911
采纳率:25%
帮助的人:256万
展开全部
dropdownlist.SelectedValue 改成 dropdownlist.Items.FindByValue(dropdownlist.SelectedValue ).ToString();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kucai_3000
2009-06-10 · TA获得超过220个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:238万
展开全部
Select * from City.....,Select * from Province .....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式