Jquery实现无刷新DropDownList联动实现代码


Posted in Javascript onMarch 08, 2010

先看HTML,我们引用Jquery,放两个DropDownList:

<style type="text/css"> 
#ddlEmployeeCars 
{ 
display:none; 
position:absolute; 
top:50px; 
left:9px; 
} 
</style> 
<script language="javascript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
 <asp:DropDownList ID="ddlEmployee" runat="server" AppendDataBoundItems="true"> 
<asp:ListItem Text="(Please Select)" Value="0" Selected="True" /> 
</asp:DropDownList> 
<asp:DropDownList ID="ddlEmployeeCars" runat="server"> 
</asp:DropDownList>

接着写核心的Script:
<script language="javascript" type="text/javascript"> 
$(function() { 
var $ddl = $("select[name$=ddlEmployee]"); 
var $ddlCars = $("select[name$=ddlEmployeeCars]"); 
$ddl.focus(); 
$ddl.bind("change keyup", function() { 
if ($(this).val() != "0") { 
loadEmployeeCars($("select option:selected").val()); 
$ddlCars.fadeIn("slow"); 
} else { 
$ddlCars.fadeOut("slow"); 
} 
}); 
}); function loadEmployeeCars(selectedItem) { 
$.ajax({ 
type: "POST", 
url: "Default.aspx/FetchEmployeeCars", 
data: "{id: " + selectedItem + "}", 
contentType: "application/json; charset=utf-8", 
dataType: "json", 
async: true, 
success: function Success(data) { 
printEmployeeCars(data.d); 
} 
}); 
} 
function printEmployeeCars(data) { 
$("select[name$=ddlEmployeeCars] > option").remove(); 
for (var i = 0; i < data.length; i++) { 
$("select[name$=ddlEmployeeCars]").append( 
$("<option></option>").val(data[i].Id).html(data[i].Car) 
); 
} 
} 
</script>

非常简单,检查值是不是0,然后ajax传值到server,成功后remove掉原来的option,append新的option.
看下WebPage的code:
public partial class _Default : System.Web.UI.Page 
{ 
[WebMethod] 
public static List<EmployeeCar> FetchEmployeeCars(int id) 
{ 
var emp = new EmployeeCar(); 
return emp.FetchEmployeeCars(id); 
} protected void Page_Load(object sender, EventArgs e) 
{ 
if (!IsPostBack) 
{ 
var employees = new Employee(); 
ddlEmployee.DataSource = employees.FetchEmployees(); 
ddlEmployee.DataTextField = "Surname"; 
ddlEmployee.DataValueField = "Id"; 
ddlEmployee.DataBind(); 
} 
} 
}

我们的Datasource class:
public class EmployeeCar 
{ 
public int Id { get; set; } 
public string Car { get; set; } private static List<EmployeeCar> LoadData() 
{ 
return new List<EmployeeCar> 
{ 
new EmployeeCar {Id = 1, Car = "Ford"}, 
new EmployeeCar {Id = 1, Car = "Holden"}, 
new EmployeeCar {Id = 1, Car = "Honda"}, 
new EmployeeCar {Id = 2, Car = "Toyota"}, 
new EmployeeCar {Id = 2, Car = "General Motors"}, 
new EmployeeCar {Id = 2, Car = "Volvo"}, 
new EmployeeCar {Id = 3, Car = "Ferrari"}, 
new EmployeeCar {Id = 3, Car = "Porsche"}, 
new EmployeeCar {Id = 3, Car = "Ford2"} 
}; 
} 
public List<EmployeeCar> FetchEmployeeCars(int id) 
{ 
return (from p in LoadData() 
where p.Id == id 
select p).ToList(); 
} 
} 
public class Employee 
{ 
public int Id { get; set; } 
public string GivenName { get; set; } 
public string Surname { get; set; } 
public List<Employee> FetchEmployees() 
{ 
return new List<Employee> 
{ 
new Employee {Id = 1, GivenName = "Tom", Surname = "Hanks"}, 
new Employee {Id = 2, GivenName = "Hugh", Surname = "Jackman"}, 
new Employee {Id = 3, GivenName = "Petter", Surname = "Liu"} 
}; 
} 
public Employee FetchEmployee(int id) 
{ 
var employees = FetchEmployees(); 
return (from p in employees 
where p.Id == id 
select p).First(); 
} 
}

完了。希望这篇POST对您有帮助。
Javascript 相关文章推荐
JavaScript 序列化对象实现代码
Dec 18 Javascript
{}与function(){}选用空对象{}来存放keyValue
May 23 Javascript
JS小功能(button选择颜色)简单实例
Nov 29 Javascript
用js判断是否为360浏览器的实现代码
Jan 15 Javascript
浅谈javascript中for in 和 for each in的区别
Apr 23 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
Aug 27 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
Dec 05 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
Nov 10 jQuery
常用的 JS 排序算法 整理版
Apr 05 Javascript
vue2.0结合Element-ui实战案例
Mar 06 Javascript
javascript实现简易聊天室
Jul 12 Javascript
微信小程序实现弹幕墙(祝福墙)
Nov 18 Javascript
JavaScript this调用规则说明
Mar 08 #Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
Mar 08 #Javascript
JavaScript中的闭包原理分析
Mar 08 #Javascript
ExtJS GridPanel 根据条件改变字体颜色
Mar 08 #Javascript
JavaScript 滚轮事件使用说明
Mar 07 #Javascript
javascript下4个跨浏览器必备的函数
Mar 07 #Javascript
Zero Clipboard js+swf实现的复制功能使用方法
Mar 07 #Javascript
You might like
php分页函数
2006/07/08 PHP
网友原创的PHP模板类代码
2008/09/07 PHP
如何使用php判断所处服务器操作系统的类型
2013/06/20 PHP
sae使用smarty模板的方法
2013/12/17 PHP
PHP连接sql server 2005环境配置及问题解决
2014/08/08 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
php使用Jpgraph创建3D饼形图效果示例
2017/02/15 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
关于文本框的一些限制控制总结~~
2010/04/15 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
jQuery动态创建html元素的常用方法汇总
2014/09/05 Javascript
JavaScript获得url查询参数的方法
2015/07/02 Javascript
JQuery Mobile 弹出式登录框的实现方法
2016/05/28 Javascript
jQuery Checkbox 全选 反选的简单实例
2016/11/29 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
JS简单生成由字母数字组合随机字符串示例
2018/05/25 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
用Vue.js在浏览器中实现裁剪图像功能
2019/06/18 Javascript
详细分析Node.js 多进程
2020/06/22 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
python 读写中文json的实例详解
2017/10/29 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
keras的ImageDataGenerator和flow()的用法说明
2020/07/03 Python
毕业生求职信的经典写法
2014/01/31 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
校园广播站开场白
2015/06/01 职场文书
Django显示可视化图表的实践
2021/05/10 Python