把 dropdownlist 控件 放进 updatepanel
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
</asp:DropDownList>
<asp:DropDownList ID="DropDownList2" runat="server" OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged">
</asp:DropDownList>
</asp:UpdatePanel>
在cs中编写响应选择事件处理,绑定数据源等
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
string strupclassID = DropDownList1SelectedItemValueToString();
DropDownList2Visible = true;
ddl_databindforLastclass(strupclassID);
}
protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
string strupclassid = DropDownList2SelectedItemValueToString();
}
哇,这么多分,真爽。
我的空间里面我以前贴过一篇三级联动的例子,我现在又给你写了一个两级联动的代码例子,在IE上测试通过,但愿其它浏览器能过,因为我没有安装别的软件,我害怕你让我一定要在别的环境调试。
下面的代码是HTML部分,数据库内容提取部分我相信你没有问题,你的ASP水平肯定比我好,稍微测试几下就能过的。
我写的例子代码如下:
<html>
<head>
<title>两级联动表单</title>
<script language="javascript">
//下面一行(仅仅一行)的内容由数据库输出
var strs='计算机系 应用与维护专业 软件工程专业|外语系 商务英语专业 其它外语专业';
//上面这一行从数据库里面提取,使用ASP应该非常简单,比如:
//responsewrite "var str='"
//last_dep=""
//do while not rseof
//if rs("Dept")<>last_dep and last_dep<>"" then responsewrite "|"&rs("Dept")
//responsewrite " "&rs("MajorName")
//last_dep=rs("Dept")
//loop
var opts=new Array();
//下面的代码利用数据库取出的strs变量,生成数组opts
var i,j,Dept,MajorName;
Dept=strssplit('|');
for (i=0;i<Deptlength;i++){
opts[i]=new Array();
MajorName=Dept[i]split(/\s+/);
for (j=0;j<MajorNamelength;j++){opts[i][j]=MajorName[j];}
}
//下面的函数初始化联动表单
function setup()
{
var Dept=documentgetElementById('id_Dept');
with(Dept){
length = 0;
for(i=0;i<optslength;i++)
options[length]=new Option(opts[i][0],opts[i][0]);
}
Dept_Changed();
}
//下面的函数在改变系时改变专业
function Dept_Changed(){
var Dept=documentgetElementById('id_Dept')selectedIndex;
var MajorName=documentgetElementById('id_MajorName');
with(MajorName){
length = 0;
for(i=1;i<opts[Dept]length;i++)
options[length]=new Option(opts[Dept][i],opts[Dept][i]);
}
}
</script>
</head>
<body>
<form>
<Select id="id_Dept" NAME="Dept" onChange="Dept_Changed();"></Select>
<Select id="id_MajorName" NAME="MajorName"></Select>
</form>
<!--js初始化函数-->
<SCRIPT language="javascript">
setup()
</SCRIPT>
</body>
</html>
有不明白的请你补充。
不过我相信你已经明白了,核心部分就是strs变量的组装,不同系之间用|分隔,一个系里面是系名开头,然后是各专业,中间用空格分隔。
祝你好运。
如果用VS2008的话有ajax控件
首先页面放一个scriptmanager控件
然后再让一个updatepanel控件
把dropdownlist放updatepanel里面就可以了
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
这样就可以简单实现
希望是你想要的
1、我是用php的,对jsp不熟,但是ajax技术过程应该是通用的,希望能给你有所提示。
ajax在实现无刷新请求服务器端数据时,你返回用了三个输出流,这样ajax只能捕捉到第一个输出,后面的程序就不会执行了(或者有执行的,但是不会再返回给前台页面了,只有第一个才会返回给前台页面)。所以我建议你可以用一个数组将你要返回的这三组数据统一到数组中,然后将数组统一传递到前台页面。在php中用到了json,我觉得问题就在于此。
2、另外由于ajax是无刷新的,而当你读取数据库中数据,想要显示数据时,有些必须要刷新页面,要不然你就得在页面加载时就将所有数据传递给页面,如果你用了ajax获取到了后台页面,但此时页面已经加载完成,这样就不会显示出你从后端读出的数据,你可以在js里用reload函数,重载本页面就可以实现。这里的问题经常是会在d出显示或者用ajax删除时出现的问题,给你说下希望能能给你提供思路~~
以上就是关于C# ASP.Net 中如何使用ajax制作两个下拉框的无刷新,联动连接数据库的全部的内容,包括:C# ASP.Net 中如何使用ajax制作两个下拉框的无刷新,联动连接数据库的、二级联动(无刷新、数据库)、如何实现C#中dropdownlist无刷新联动 不取数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)