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();这样还是不行
请说得详细一点!先谢谢了 展开
我试过把省的内容写到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();这样还是不行
请说得详细一点!先谢谢了 展开
4个回答
展开全部
呵呵 刚刚做了这个~ 我做的是国家和省份 我就不改代码了哈
给你说的详细一点哈(*^__^*)...
建议你不要直接从方法里写查询数据库的代码!
你一定会获取省和城市的数据吧
比如说 获取到的国家的数据集是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;
// 然后重新绑定一下你城市的值而已...
}
明白了么
说的够仔细吧
累死了~
给你说的详细一点哈(*^__^*)...
建议你不要直接从方法里写查询数据库的代码!
你一定会获取省和城市的数据吧
比如说 获取到的国家的数据集是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;
// 然后重新绑定一下你城市的值而已...
}
明白了么
说的够仔细吧
累死了~
展开全部
你的ddl2就不用AutoPostback了,也就是选择改变后不要激发dropdownlist2_SelectedIndexChanged这个事件了.
而且还要看你ddl1是怎么绑定.
注意你是通过PNo查询的,但SelectedValue指的是Value不是Text.所以还要在ddl1设置Value.以下面代码示例设置ddl1
this.dropdownlist2.DataTextField = "CNa";
this.dropdownlist2.DataValueField = "CNo";//
this.dropdownlist2.DataBind();
而且还要看你ddl1是怎么绑定.
注意你是通过PNo查询的,但SelectedValue指的是Value不是Text.所以还要在ddl1设置Value.以下面代码示例设置ddl1
this.dropdownlist2.DataTextField = "CNa";
this.dropdownlist2.DataValueField = "CNo";//
this.dropdownlist2.DataBind();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
dropdownlist.SelectedValue 改成 dropdownlist.Items.FindByValue(dropdownlist.SelectedValue ).ToString();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Select * from City.....,Select * from Province .....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询