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 相关文章推荐
Jquery 在页面加载后执行的几种方式
Mar 14 Javascript
js 通过cookie实现刷新不变化树形菜单
Oct 30 Javascript
JavaScript实现更改网页背景与字体颜色的方法
Feb 02 Javascript
Angular2入门教程之模块和组件详解
May 28 Javascript
vue组件实现弹出框点击显示隐藏效果
Oct 26 Javascript
详解webpack运行Babel教程
Jun 13 Javascript
Vue.directive使用注意(小结)
Aug 31 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
Jun 07 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
Jul 25 Javascript
layui弹出框Tab选项卡的示例代码
Sep 04 Javascript
Vue组件通信中非父子组件传值知识点总结
Dec 05 Javascript
解决新建一个vue项目过程中遇到的问题
Oct 22 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实现微信支付之现金红包
2018/05/30 PHP
激活 ActiveX 控件
2006/10/09 Javascript
表格 隔行换色升级版
2009/11/07 Javascript
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
js闭包的用途详解
2014/11/09 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
详细分析Node.js 多进程
2020/06/22 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
python str与repr的区别
2013/03/23 Python
Python3实现生成随机密码的方法
2014/08/23 Python
Django框架下在URLconf中指定视图缓存的方法
2015/07/23 Python
不要用强制方法杀掉python线程
2017/02/26 Python
CentOS中升级Python版本的方法详解
2017/07/10 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
python操作excel让工作自动化
2019/08/09 Python
python3 实现调用串口功能
2019/12/26 Python
django 实现简单的插入视频
2020/04/07 Python
Python grequests模块使用场景及代码实例
2020/08/10 Python
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
大四自我鉴定
2014/02/08 职场文书
《月亮湾》教学反思
2014/04/14 职场文书
保安公司服务承诺书
2014/05/28 职场文书
安全生产年活动总结
2014/08/29 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫
详解SQL报错盲注
2022/07/23 SQL Server
java实现web实时消息推送的七种方案
2022/07/23 Java/Android