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移除事件 js绑定事件实例应用
Nov 28 Javascript
JS图片根据鼠标滚动延时加载的实例代码
Jul 13 Javascript
jQuery EasyUI中DataGird动态生成列的方法
Apr 05 Javascript
jQuery ajax MD5实现用户注册即时验证功能
Oct 11 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
Oct 28 Javascript
AngularJS学习第一篇 AngularJS基础知识
Feb 13 Javascript
jquery实现静态搜索功能(可输入搜索文字)
Mar 28 jQuery
webpack 打包压缩js和css的方法示例
Mar 20 Javascript
在vue中使用jointjs的方法
Mar 24 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
Jul 12 Javascript
vue使用ajax获取后台数据进行显示的示例
Aug 09 Javascript
OpenLayers3实现对地图的基本操作
Sep 28 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 删除cookie和浏览器重定向
2009/03/16 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
PHP基于SimpleXML生成和解析xml的方法示例
2017/07/17 PHP
php curl批处理实现可控并发异步操作示例
2018/05/09 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
2019/10/24 PHP
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
2015/08/04 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
2016/09/05 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
Vue数组更新及过滤排序功能
2017/08/10 Javascript
基于Vue制作组织架构树组件
2017/12/06 Javascript
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
解决vuex刷新数据消失问题
2020/11/12 Javascript
python线程池threadpool使用篇
2018/04/27 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
2019/02/22 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
高级方案规划工程师岗位职责
2013/11/29 职场文书
小班评语大全
2014/05/04 职场文书
护林防火标语
2014/06/27 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript