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 相关文章推荐
去除链接虚线全面分析总结
Aug 15 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
Dec 19 Javascript
获取鼠标在div中的相对位置的实现代码
Dec 30 Javascript
JavaScript学习笔记之JS事件对象
Jan 22 Javascript
jquery选择器简述
Aug 31 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
Nov 07 Javascript
js判断当前页面用什么浏览器打开的方法
Jan 06 Javascript
jquery编写Tab选项卡滚动导航切换特效
Jul 17 Javascript
简单谈谈原生js的math对象
Jun 27 Javascript
js实现随机点名系统(实例讲解)
Oct 18 Javascript
详解Chai.js断言库API中文文档
Jan 31 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
Dec 05 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
拼音码表的生成
2006/10/09 PHP
drupal 代码实现URL重写
2011/05/04 PHP
php中用foreach来操作数组的代码
2011/07/17 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
2011/10/30 PHP
Mootools 1.2教程 类(一)
2009/09/15 Javascript
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
jQuery Validate表单验证深入学习
2015/12/18 Javascript
微信小程序实现简单评论功能
2018/11/28 Javascript
JQuery常见节点操作实例分析
2019/05/15 jQuery
Angular请求防抖处理第一次请求失效问题
2019/05/17 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
JS array数组检测方式解析
2020/05/19 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
python编程开发之日期操作实例分析
2015/11/13 Python
python使用Matplotlib画条形图
2020/03/25 Python
python实现网站微信登录的示例代码
2019/09/18 Python
在OpenCV里实现条码区域识别的方法示例
2019/12/04 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
美国时尚在线:Showpo
2017/09/08 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
三个Unix的命令面试题
2015/04/12 面试题
小学优秀辅导员事迹材料
2014/05/11 职场文书
职工年度考核评语
2014/12/31 职场文书
红旗渠导游词
2015/02/09 职场文书
学校办公室主任岗位职责
2015/04/01 职场文书
话题作文之成长
2019/12/09 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
Python中else的三种使用场景
2021/06/16 Python