100分…高手来啊!联动下拉列表的问题,大侠救急!

hk207 2008-04-18 07:43:57

//下拉列表类--不同表不同字段
public String DropDownListld(string tablename, String field_id, String field_name, String field_order, string default_value)
{

db.select(dt, "select " + field_id + "," + field_name + " from " + tablename + " order by " + field_order);
sb.Append("<SELECT size=1 name=" + field_id + " class=\"selectld\">");
for (int i = 0; i < dt.Rows.Count; i++)
{
if ((default_value == null || default_value.Equals("")) && i == 0)
{
sb.Append("<OPTION value=\"" + dt.Rows[i][field_id] + "\" selected>" + dt.Rows[i][field_name] + "</OPTION>");
}
else if (default_value != null && dt.Rows[i][field_id].ToString().Equals(default_value))
{
sb.Append("<OPTION value=\"" + dt.Rows[i][field_id] + "\" selected>" + dt.Rows[i][field_name] + "</OPTION>");
}
else
{
sb.Append("<OPTION value=\"" + dt.Rows[i][field_id] + "\" >" + dt.Rows[i][field_name] + "</OPTION>");
}
}
sb.Append("</SELECT>");
return sb.ToString();

}



//问题是:

//现在有3个数据库表,表A里其中有两字段AId、AName;表B里其中有两字段BId、BName;表A和表B通过表C关联,表C里其中有两字段AId、BId(即表A和表B里的AId、BId)。

//想要的效果是:
//下拉列表A从表A里取数据,下拉列表B从表B里取数据。通过表C来实现联动。

//举例如下:

//表A 表B 表C
//—————————————————————
//AId AName | BId BName | AId BId
//a1 广东 | b1 广州 | a1 b1
//a2 广西 | b2 肇庆 | a3 b6
//a3 河南 | b3 深圳 | a1 b3
//a4 河北 | b4 南宁 | a2 b4
//a5 山东 | b5 桂林 | a1 b2
//a6 山西 | b6 郑州 | a1 b7
//a7 湖南 | b7 某地 | a2 b5
//a7 湖南 | b8 长沙 | a2 b7
//… … … … … … … …

//则,
//列表A为:

<select name="a" id="alist" onchange="">
<option value="" selected>-请选择-</option>
<option value="a1">广东</option>
<option value="a2">广西</option>
<option value="a3">河南</option>
<option value="a4">河北</option>
<option value="a5">山东</option>
<option value="a6">山西</option>
<option value="a7">湖南</option>
</select>

//当列表A(大类)选择广东时,根据表C,列表B(小类)为:

<select name="b" id="blist">
<option value="" selected>-请选择-</option>
<option value="b1">广州</option>
<option value="b2">肇庆</option>
<option value="b3">深圳</option>
<option value="b7">某地</option>
</select>
//当列表A选择不同时,根据表C,列表B实现联动
//需要注意的是,表C中的BId也可以相同(如例子中的某地(b7)既在列表A选择广东时列表B里有,列表A选择广西时列表B里也要有)。


其中,前台调用下拉列表类为:

<%Response.Write(new com.ldh.util.HtmlDataBase().DropDownList("A", "AId", "AName", "AId", dt.Rows[0]["AId"].ToString()));%>


哪位大侠来帮帮偶吧!!谢啦^_^
...全文
252 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
isitor 2008-08-19
  • 打赏
  • 举报
回复
用AJAX来实现

来个样例
<script type="text/javascript">

function updatePage() {
if (http_request.readyState == 4) {

var response = http_request.responseText;

document.getElementById("aaa").innerHTML = response;
}
}

function callServer() {

var name = document.getElementById("DeptID").value;
if ((name == null) || (name == "")) return;
var url = "../com/getSales.aspx";
var pp="name=" + name ;

send_request("POST",url,pp,"XML",updatePage);

}
</script>



页面里定义一个DIV

<div id="aaa"></div>
hk207 2008-04-21
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 skyaspnet 的回复:]
引用 29 楼 skyaspnet 的回复:
QQ 343397317 可以把你的数据库文件和代码发过来, 我可以帮你写
[/Quote]

老大的QQ不在线?

PS:偶也在西安上过学(南郊的xd)
skyaspnet 2008-04-21
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 skyaspnet 的回复:]
QQ 343397317 可以把你的数据库文件和代码发过来, 我可以帮你写
[/Quote]
hk207 2008-04-21
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 yuxuanji 的回复:]
如果把数据都放到客户端,那么6楼的js可行
如果动态绑定下拉菜单,即17楼的方法
不过现在多连下拉大都采用ajax
[/Quote]

我也是想用ajax,可惜ajax完全不会!?郁闷啊……
yang_kun 2008-04-21
  • 打赏
  • 举报
回复
学习了............
skyaspnet 2008-04-21
  • 打赏
  • 举报
回复
QQ 343397317 可以把你的数据库文件和代码发过来, 我可以帮你写
gshuhugs 2008-04-21
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 Magic_YJL 的回复:]
给你个思路吧,最简单,但是每次都要刷新页面的
添加两个DropDownList
DropDownList1
DropDownList2
你在Page_Load事件里加载DropDownList1里的数据
然后DropDownList1的SelectedIndexChanged事件里,根据DropDownList1里选中的值加载DropDownList2的数据
在DropDownList2的SelectedIndexChanged事件里,根据DropDownList2里选中的值加载DropDownList3的数据
这中方法很简单,要比你生成HTML简单 …
[/Quote]
这个方法可行的,我也曾经做过几个DropDownList联动的例子,
你可以在Page_Load里把A表的数据去出来加到DropDownList1.Items集合中(DropDownList1.Items.Add("数据")),
然后在DropDownList1_SelectedIndexChanged事件中写代码,根据DropDownList1.SelectedValue。(该值就是A表中的AId)利用B表和C表查询出当前省的城市(多表查询),然后把数据加到DropDownList2.Items集合中。
这样每次选择DropDownList1中的选项时,DropDownList2就会随着变动,
注意:要把AutoPostBack属性设置为false不然DropDownList2中的数据变的很多。
LutzMark 2008-04-21
  • 打赏
  • 举报
回复
如果把数据都放到客户端,那么6楼的js可行
如果动态绑定下拉菜单,即17楼的方法
不过现在多连下拉大都采用ajax
abc83915 2008-04-21
  • 打赏
  • 举报
回复
顶上
闲游四疯 2008-04-21
  • 打赏
  • 举报
回复
看了半天也看不懂,,我有这么菜吗?
tangqiaojie 2008-04-21
  • 打赏
  • 举报
回复
6楼的思路是可以的
Magic_YJL 2008-04-21
  • 打赏
  • 举报
回复
LZ,怎么会呢?
17楼的肯定可以了,我初学C#就是那样做的,你再44
Magic_YJL 2008-04-21
  • 打赏
  • 举报
回复
17楼的思路要将三个DropDownList的AutoPostBack属性设置为true,默认的是false
Magic_YJL 2008-04-21
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 hk207 的回复:]
引用 34 楼 tiancaolin 的回复:
直接用微软的ajax asp.net就行了。都不用写什么客户端代码。也不用因ajaxpro.2的某些怪异哭鼻子


怎么用呢?指点指点!不胜感激……
[/Quote]

我给你的代码就是用微软的ajax asp.net实现的,没有给你数据库,
不可能把什么都给你,这是公司的数据库,我发给你,我不泄密了?
我只是给你提供一个思路,况且我已经给你两个思路了,
一个是17楼的,一个就是我发给你的,你仔细研究一下吧
hk207 2008-04-21
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 tiancaolin 的回复:]
直接用微软的ajax asp.net就行了。都不用写什么客户端代码。也不用因ajaxpro.2的某些怪异哭鼻子
[/Quote]

怎么用呢?指点指点!不胜感激……
_NET2004 2008-04-21
  • 打赏
  • 举报
回复
如果每次刷新的话很简单,看17L
datahandler2 2008-04-21
  • 打赏
  • 举报
回复
直接用微软的ajax asp.net就行了。都不用写什么客户端代码。也不用因ajaxpro.2的某些怪异哭鼻子
Magic_YJL 2008-04-19
  • 打赏
  • 举报
回复
忘记告诉楼主,我的代码你必须下载一些Ajax方面的组件,不下载的话,肯定运行不了了
建议你按照我17楼给你的思路去做
Magic_YJL 2008-04-19
  • 打赏
  • 举报
回复
这年头得点技术分可真不容易啊
Magic_YJL 2008-04-19
  • 打赏
  • 举报
回复
邮件发送成功!
加载更多回复(19)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧