ASP.NET无刷新二级联动下拉列表,同样适用与firefox

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

可能"极好的"又会带来很多的非议,但是我认为这确实很好,我看了大约20个无刷新的连动下拉列表,他们在firefox下面就一团糟.为了这个我差不多搞了两天,就是如果提交窗体后如何保持第二个列表框的值,因为通过js 给下拉框添加条目那么他的状态是不会被保存的测试平台:ie6,firefox

功能:二级无刷新连动

特点:跨浏览器;提交窗体取第二下拉框的值;数据来源于数据库;以xmlhttp来发送请求,实现无刷新

请求:如果您能够找到更好的方法请告诉我,非常感谢,您的批评和建议对我是莫大的鼓励

webform1.aspx:

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="drop.WebForm1" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

<HEAD>

<title>WebForm1</title>

<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">

<meta name="CODE_LANGUAGE" Content="C#">

<meta name="vs_defaultClientScript" content="JavaScript">

<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

<script language="javascript">

//jb函数会根据不同的浏览器初始化个xmlhttp对象

function jb()

{

var A=null;

try

{

A=new ActiveXObject("Msxml2.XMLHTTP");

}

catch(e)

{

try

{

A=new ActiveXObject("Microsoft.XMLHTTP");

}

catch(oc)

{

A=null

}

}

if ( !A && typeof XMLHttpRequest != "undefined" )

{

A=new XMLHttpRequest()

}

return A

}

//下面Go函数是父列表框改变的时候调用,参数是选择的条目

function Go(obj)

{

//得到选择框的下拉列表的value

var svalue = obj.value;

//定义要处理数据的页面

var weburl = "webform1.aspx?parent_id="+svalue;

//初始化个xmlhttp对象

var xmlhttp = jb();

//提交数据,第一个参数最好为get,第三个参数最好为true

xmlhttp.open("get",weburl,true);

// alert(xmlhttp.responseText);

//如果已经成功的返回了数据

xmlhttp.onreadystatechange=function()

{

if(xmlhttp.readyState==4)//4代表成功返回数据

{

var result = xmlhttp.responseText;//得到服务器返回的数据

//先清空dListChild的所有下拉项

document.getElementById("dListChild").length = 0;

//给dListChild加个全部型号的,注意是Option不是option

document.getElementById("dListChild").options.add(new Option("全部型号","0"));

if(result!="")//如果返回的数据不是空

{

//把收到的字符串按照,分割成数组

var allArray = result.split(",");

//循环这个数组,注意是从1开始,因为收到的字符串第一个字符是,号,所以分割后第一个数组为空

for(var i=1;i<allArray.length;i++)

{

//在把这个字符串按照|分割成数组

var thisArray = allArray[i].split("|");

//为dListChild添加条目

document.getElementById("dListChild").options.add(new Option(thisArray[1].toString(),thisArray[0].toString()));

}

}

}

}

//发送数据,请注意顺序

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航