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 相关文章推荐
js复制到剪切板的实例方法
Jun 28 Javascript
js实现回放拖拽轨迹从过程上进行分析
Jun 26 Javascript
AngularJS模块管理问题的非常规处理方法
Apr 29 Javascript
js实现具有高亮显示效果的多级菜单代码
Sep 01 Javascript
jQuery取消特定的click事件
Feb 29 Javascript
javascript的replace方法结合正则使用实例总结
Jun 16 Javascript
jquery中用jsonp实现搜索框功能
Oct 18 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
Jan 19 Javascript
jQuery设置图片等比例缩小的方法
Apr 29 jQuery
jQuery实现的简单前端搜索功能示例
Oct 28 jQuery
vue-i18n实现中英文切换的方法
Jul 06 Javascript
Vue使用Element实现增删改查+打包的步骤
Nov 25 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
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
php 将excel导入mysql
2009/11/09 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
面向对象的Javascript之一(初识Javascript)
2012/01/20 Javascript
jquery实现网站超链接和图片提示效果
2013/03/21 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
2013/09/05 Javascript
javascript计时器详解
2015/02/28 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
AngularJS封装指令方法详解
2016/12/12 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
基于vue.js快速搭建图书管理平台
2017/10/29 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
Python设计模式之代理模式实例
2014/04/26 Python
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
Python SQLAlchemy入门教程(基本用法)
2019/11/11 Python
Python笔记之代理模式
2019/11/20 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
2020/11/09 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
html+css3实现的登录界面
2020/12/09 HTML / CSS
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
草莓网化妆品加拿大网站:Strawberrynet Canada
2016/09/20 全球购物
红色康乃馨酒店:Red Carnation Hotels
2017/06/22 全球购物
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
社会学专业求职信
2014/02/24 职场文书
同事去世追悼词
2015/06/23 职场文书
大学同学聚会感言
2015/07/30 职场文书