JQuery和ASP.NET分别实现级联下拉框效果
在学习JQuery之前知道下拉框的级联效果可以通过asp.net控件实现,现在学习了JQuery,知道了JQuery和select也能实现。我分别举两个小例子说明这两种方法如何实现.
1.用JQuery和select来实现汽车厂商和汽车类型的联动
效果图:
逻辑分析图:
html代码:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
- <title>级联下拉框效果</title>
- <link rel="stylesheet" type="text/css" href="css/chainselect.css">
- <script language="javascript" type="text/javascript" src="js/jquery.js"></script>
- <script language="javascript" type="text/javascript" src="js/chainselect.js"></script>
- </head>
- <body>
- <div class="car">
- <span class="carname">
- 汽车厂商:
- <select>
- <option value="">请选择汽车厂商</option>
- <option value="BMW">宝马</option>
- <option value="Audi">奥迪</option>
- <option value="VW">大众</option>
- </select>
- <img src="data:images/pfeil.gif" alt="有数据"/>
- </span>
- <span class="cartype">
- 汽车类型:
- <select></select>
- </span>
- </div>
- </body>
- </html>
css代码:
- .car {
- text-align:center;
- }
- .cartype{
- display:none;
- }
js代码:
- $(document).ready(function(){
- //找到下拉框
- var carnameSelect = $(".carname").children("select");
- var cartypeSelect = $(".cartype").children("select");
- //给下拉框注册事件
- carnameSelect.change(function(){
- var carnameValue = $(this).val();
- if( carnameValue != ""){
- //carnameValue不为空的情况接着判断
- if(!carnameSelect.data(carnameValue)){
- //不在缓冲区中,需要向服务器请求
- $.post("ChainSelect",{keyword:carnameValue,type:"top"},function(data){
- if (data.length != 0){
- //返回的数据不为空
- cartypeSelect.html("");
- $("<option value=''>请选择汽车类型</option>").appendTo(cartypeSelect);
- for(var i = 0;i < data.length; i++ ){
- $("<option value =' " + data[i] + " '> "+ data[i] +"</option>").appendTo(cartypeSelect);
- }
- cartypeSelect.parent().show();
- carnameSelect.next().show();
- }else{
- //返回的数据为空
- cartypeSelect.parent().hide();
- carnameSelect.next().hide();
- }
- carnameSelect.data(carnameValue,data);
- },"json");
- }else{
- //在缓冲区中
- var data = carnameSelect.data(carnameValue);
- if (data.length != 0){
- //返回的数据不为空
- cartypeSelect.html("");
- $("<option value=''>请选择汽车类型</option>").appendTo(cartypeSelect);
- for(var i = 0;i < data.length; i++ ){
- $("<option value =' " + data[i] + " '> "+ data[i] +"</option>").appendTo(cartypeSelect);
- }
- cartypeSelect.parent().show();
- carnameSelect.next().show();
- }else{
- //返回的数据为空
- cartypeSelect.parent().hide();
- carnameSelect.next().hide();
- }
- }
- }else{
- //carnameValue为空的情况,隐藏第二个下拉框
- cartypeSelect.parent().hide();
- carnameSelect.next().hide();
- }
- });
- });
2.用ASP.NET控件实现部门和员工的联动
效果图:
Default.aspx代码:
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head runat="server">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
- <title></title>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- <asp:DropDownList ID="ddlDep" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlDep_SelectedIndexChanged">
- </asp:DropDownList>
- <br />
- <asp:ListBox ID="lBoxEmp" runat="server"></asp:ListBox>
- </div>
- </form>
- </body>
- </html>
Default.aspx.cs代码:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Data.SqlClient;
- public partial class _Default : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!this.IsPostBack)
- {
- SqlConnection con = DBCon.createConnection();
- con.Open();
- //显示部门
- SqlCommand cmd = new SqlCommand("select * from Tdepartment", con);
- SqlDataReader sdr = cmd.ExecuteReader();
- this.ddlDep.DataSource = sdr;
- this.ddlDep.DataTextField = "depName";
- this.ddlDep.DataValueField = "depID";
- this.ddlDep.DataBind();
- sdr.Close();
- //显示员工
- SqlCommand cmdEmp =new SqlCommand ("select * from emp where depID=" + this.ddlDep .SelectedValue ,con);
- SqlDataReader sdrEmp = cmdEmp.ExecuteReader();
- while (sdrEmp.Read())
- {
- this.lBoxEmp.Items.Add (new ListItem(sdrEmp.GetString(1),sdrEmp .GetInt32 (0).ToString ()));
- }
- sdrEmp.Close();
- //关闭连接
- con.Close();
- }
- }
- protected void ddlDep_SelectedIndexChanged(object sender, EventArgs e)
- {
- this.lBoxEmp.Items.Clear();
- SqlConnection con = DBCon.createConnection();
- con.Open();
- SqlCommand cmdEmp = new SqlCommand("select * from emp where depID=" + this.ddlDep.SelectedValue, con);
- SqlDataReader sdrEmp = cmdEmp.ExecuteReader();
- while (sdrEmp.Read())
- {
- this.lBoxEmp.Items.Add(new ListItem(sdrEmp.GetString(1), sdrEmp.GetInt32(0).ToString()));
- }
- sdrEmp.Close();
- //关闭连接
- con.Close();
- }
- }
DBCon.cs代码
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Data.SqlClient;
- /// <summary>
- /// DBCon 的摘要说明
- /// </summary>
- public class DBCon
- {
- public DBCon()
- {
- //
- // TODO: 在此处添加构造函数逻辑
- //
- }
- public static SqlConnection createConnection()
- {
- SqlConnection con = new SqlConnection("server=.;database=department;uid=sa;pwd=123456");
- return con;
- }
- }
3.这两种方法的比较
使用Asp.net控件实现比较简单,但在大量用户使用的情况下最好不要使用,不断向服务器请求会给服务器带来很大的负担。使用JQuery和ajax实现可以有动态效果,实现过程比较复杂,但有数据缓冲和ajax局部刷新可以减少服务器的负担。
本文转自http://blog.csdn.net/wangyajin333/article/details/36474545
JQuery和ASP.NET分别实现级联下拉框效果的更多相关文章
- jQuery无限级联下拉框插件
自己编写jQuery插件 之 无限级联下拉框 因为是级联,所以数据必须是树型结构的,我这里的测试数据如下: 看下效果图: 1.>图一: 2.>图二: 3.>图三: 由图可知,下拉 ...
- 自动补齐flexselect+级联下拉框案例
在开发web应用时,经常遇到类似省市区级联下拉框操作,即选中省份自动级联加载该省份所有的市,选中市自动级联加载该市所有的区:假设省市区的数据量很大,此时用户想选中某市,因而要从上往下查找,可能半天都找 ...
- struts-hibernate-ajax完成区县和街道级联下拉框功能(二补充使用json解析list结果集,ajax循环json层级处理)
针对<struts-hibernate-ajax完成区县和街道级联下拉框功能>进行补充,上一篇中,要在action中拼接JSON格式字符串,很容易手抖.直接用json处理一下转成json格 ...
- EXCEL(1)级联下拉框
EXCEL级联下拉框 http://jingyan.baidu.com/article/3c343ff756e0cf0d377963f9.html 在输入一些多级项目时,如果输入前一级内容后,能够自动 ...
- js基于json的级联下拉框
级联下拉列表是项目中常用到的.比如省市县,比如企业性质等,做成一个js通用组件, 在静态页出来后可以直接插入,将数据和html静态页做一个解耦. 贴出来抛砖引玉吧. /** * @author sun ...
- JS级联下拉框
//Ajax级联获取SDKfunction GetDropDownList(parent_ddlID, fill_dllID, url, param) { this.pId = parent_d ...
- jQuery制作简洁的多级联动Select下拉框
今天我们要来分享一款很实用的jQuery插件,它是一个基于jQuery多级联动的省市地区Select下拉框,并且值得一提的是,这款联动下拉框是经过自定义美化过的,外观比浏览器自带的要漂亮许多.另外,这 ...
- C# ,数据导出到带有级联下拉框的模板(一,模板的级联功能)
一.首先解决如何做模板中增加级联功能 1,首先打开一个新的Excel文件,新增sheet,把分类保存在里面,如下图所示 2.回到sheet1,选中要增加下拉框的行(注意:请排除首行,首行是标题) 3. ...
- Struts2 级联下拉框 详解析
目录(?)[+] 运行环境:myeclipse8.6+jboss5.1+jvm1.6 先看最后目录结构: 直接上源码: complexFormTag.jsp: <%@ page language ...
随机推荐
- 【HDU - 4345 】Permutation(DP)
BUPT2017 wintertraining(15) #8F 题意 1到n的排列,经过几次置换(也是一个排列)回到原来的排列,就是循环了. 现在给n(<=1000),求循环周期的所有可能数. ...
- P2521 [HAOI2011]防线修建
题目链接:P2521 [HAOI2011]防线修建 题意:给定点集 每次有两种操作: 1. 删除一个点 (除开(0, 0), (n, 0), 与指定首都(x, y)) 2. 询问上凸包长度 至于为什么 ...
- Android 2019最新面试实战总结
Android: 今日头条屏幕适配的原理? 1:首先计算出 density,计算公式:当前设备屏幕总宽度(单位为像素)/ 设计图总宽度(单位为 dp) = densitydensity 的意思就是 1 ...
- 【BZOJ4891】[TJOI2017]龙舟(Pollard_rho)
[BZOJ4891][TJOI2017]龙舟(Pollard_rho) 题面 BZOJ 洛谷 题解 看了半天题....就是让你求\(\frac{b}{a}\)在模\(M\)意义下的值... 首先把\( ...
- 【CF618F】Double Knapsack(构造)
[CF618F]Double Knapsack(构造) 题面 洛谷 Codeforces 题解 很妙的一道题. 发现找两个数集很不爽,我们强制加强限制,我们来找两个区间,使得他们的区间和相等. 把区间 ...
- Codeforces Round #554 ( div.2 ) 总结
应该经常需要锻炼一下英语阅读理解能力和代码能力,所以以后还是需要多打打CF. 今天大概就是水一水找找感觉. A. Neko Finds Grapes $n$个箱子,$m$个钥匙 ($n,m \leq ...
- cf1061E Politics (费用流)
看到数据范围,考虑网络流..但考的时候完全不知道怎么建图 考虑流量表示选的点个数,费用表示选点的收益,跑最大费用最大流 那么我用一个点x表示某树中的询问点x,刨去它子孙询问点的子树后的子树 对于树1, ...
- UVA 11149-Power of Matrix(等比矩阵求和)
给定一个矩阵A 要求A + A^2 + A^3 +…. A^k: 对于到n的等比矩阵求和 如果n是偶数: 如果n是奇数: #include<stdio.h> #include<s ...
- Docker部署Jenkins测试环境
安装docker环境 yum install epel-release -y && yum install docker -y 如果是高手需要docker-compose的话就再装个d ...
- ACM-ICPC 2018 南京赛区网络预赛 G Lpl and Energy-saving Lamps(线段树)
题目链接:https://nanti.jisuanke.com/t/30996 中文题目: 在喝茶的过程中,公主,除其他外,问为什么这样一个善良可爱的龙在城堡里被监禁Lpl?龙神秘地笑了笑,回答说这是 ...