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 相关文章推荐
window.js 主要包含了页面的一些操作
Dec 23 Javascript
jquery操作cookie插件分享
Jan 14 Javascript
js简单实现调整网页字体大小的方法
Jul 23 Javascript
Javascript中Promise的四种常用方法总结
Jul 14 Javascript
JavaScript取得gridview中获取checkbox选中的值
Jul 24 Javascript
javaScript之split与join的区别(详解)
Nov 08 Javascript
vue 子组件向父组件传值方法
Feb 26 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
Aug 20 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
Sep 01 Javascript
Vue的状态管理vuex使用方法详解
Feb 05 Javascript
javascrpt密码强度校验函数详解
Mar 18 Javascript
Vue中computed和watch有哪些区别
Dec 19 Vue.js
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实现从ftp服务器上下载文件树到本地电脑的程序
2009/02/10 PHP
php 动态添加记录
2009/03/10 PHP
php日期转时间戳,指定日期转换成时间戳
2012/07/17 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
php单例模式实现方法分析
2015/03/14 PHP
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
Vue实现数据请求拦截
2019/10/23 Javascript
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
对python模块中多个类的用法详解
2019/01/10 Python
PyTorch基本数据类型(一)
2019/05/22 Python
flask框架配置mysql数据库操作详解
2019/11/29 Python
Python 在局部变量域中执行代码
2020/08/07 Python
python 爬取百度文库并下载(免费文章限定)
2020/12/04 Python
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
2020/08/19 HTML / CSS
amazeui 验证按钮扩展的实现
2020/08/21 HTML / CSS
全球虚拟主机商:HostGator
2017/02/06 全球购物
Yahoo-PHP面试题2
2014/12/06 面试题
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
影视艺术学院毕业生自荐信
2013/11/13 职场文书
复核员上岗演讲稿
2014/01/05 职场文书
《蒙娜丽莎之约》教学反思
2014/02/27 职场文书
意向协议书范本
2014/04/23 职场文书
活动总结报告怎么写
2014/07/03 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
生活委员竞选稿
2015/11/21 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书