zoukankan      html  css  js  c++  java
  • Jquery实现无刷新DropDownList联动

            随着Jquery1.4的发布,Jquery运用越来越多了,让我们来实现以前经常用到的DropDownList无刷新联动。
    先看HTML,我们引用Jquery,放两个DropDownList:

       1:   <style type="text/css">
       2:          #ddlEmployeeCars 
       3:          {
       4:              display:none;
       5:              position:absolute;
       6:              top:50px;
       7:              left:9px;
       8:          }
       9:      </style>
      10:      <script language="javascript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>     
      11:   
      12:     <asp:DropDownList ID="ddlEmployee" runat="server" AppendDataBoundItems="true">
      13:              <asp:ListItem Text="(Please Select)" Value="0" Selected="True" />
      14:          </asp:DropDownList>
      15:          <asp:DropDownList ID="ddlEmployeeCars" runat="server">
      16:          </asp:DropDownList>


    接着写核心的Script:

       1:  <script language="javascript" type="text/javascript">
       2:          $(function() {
       3:              var $ddl = $("select[name$=ddlEmployee]");
       4:              var $ddlCars = $("select[name$=ddlEmployeeCars]");
       5:              $ddl.focus();
       6:              $ddl.bind("change keyup", function() {
       7:                  if ($(this).val() != "0") {
       8:                      loadEmployeeCars($("select option:selected").val());                    
       9:                      $ddlCars.fadeIn("slow");
      10:                  } else {
      11:                      $ddlCars.fadeOut("slow");
      12:                  }
      13:              });
      14:          });
      15:   
      16:          function loadEmployeeCars(selectedItem) {
      17:              $.ajax({
      18:                  type: "POST",
      19:                  url: "Default.aspx/FetchEmployeeCars",
      20:                  data: "{id: " + selectedItem + "}",
      21:                  contentType: "application/json; charset=utf-8",
      22:                  dataType: "json",
      23:                  async: true,
      24:                  success: function Success(data) {
      25:                      printEmployeeCars(data.d);
      26:                  }
      27:              });
      28:          }        
      29:   
      30:          function printEmployeeCars(data) {
      31:              $("select[name$=ddlEmployeeCars] > option").remove();
      32:              for (var i = 0; i < data.length; i++) {
      33:                  $("select[name$=ddlEmployeeCars]").append(
      34:                      $("<option></option>").val(data[i].Id).html(data[i].Car)
      35:                  );
      36:              }
      37:          }       
      38:      </script>

    非常简单,检查值是不是0,然后ajax传值到server,成功后remove掉原来的option,append新的option.
    看下WebPage的code:

       1:      public partial class _Default : System.Web.UI.Page
       2:      {
       3:          [WebMethod]
       4:          public static List<EmployeeCar> FetchEmployeeCars(int id)
       5:          {
       6:              var emp = new EmployeeCar();
       7:              return emp.FetchEmployeeCars(id);
       8:          }
       9:   
      10:          protected void Page_Load(object sender, EventArgs e)
      11:          {
      12:              if (!IsPostBack)
      13:              {
      14:                  var employees = new Employee();
      15:                  ddlEmployee.DataSource = employees.FetchEmployees();
      16:                  ddlEmployee.DataTextField = "Surname";
      17:                  ddlEmployee.DataValueField = "Id";
      18:                  ddlEmployee.DataBind();
      19:              }
      20:          }
      21:      }


    我们的Datasource class:

       1:     public class EmployeeCar
       2:      {
       3:          public int Id { get; set; }
       4:          public string Car { get; set; }
       5:   
       6:          private static List<EmployeeCar> LoadData()
       7:          {
       8:              return new List<EmployeeCar>
       9:                         {
      10:                             new EmployeeCar {Id = 1, Car = "Ford"},
      11:                             new EmployeeCar {Id = 1, Car = "Holden"},
      12:                             new EmployeeCar {Id = 1, Car = "Honda"},
      13:                             new EmployeeCar {Id = 2, Car = "Toyota"},
      14:                             new EmployeeCar {Id = 2, Car = "General Motors"},
      15:                             new EmployeeCar {Id = 2, Car = "Volvo"},
      16:                             new EmployeeCar {Id = 3, Car = "Ferrari"},
      17:                             new EmployeeCar {Id = 3, Car = "Porsche"},
      18:                             new EmployeeCar {Id = 3, Car = "Ford2"}
      19:                         };
      20:          }
      21:   
      22:          public List<EmployeeCar> FetchEmployeeCars(int id)
      23:          {
      24:              return (from p in LoadData()
      25:                      where p.Id == id
      26:                      select p).ToList();
      27:          }
      28:      }
      29:   
      30:      public class Employee
      31:      {
      32:          public int Id { get; set; }
      33:          public string GivenName { get; set; }
      34:          public string Surname { get; set; }
      35:   
      36:          public List<Employee> FetchEmployees()
      37:          {
      38:              return new List<Employee>
      39:                         {
      40:                             new Employee {Id = 1, GivenName = "Tom", Surname = "Hanks"},
      41:                             new Employee {Id = 2, GivenName = "Hugh", Surname = "Jackman"},
      42:                             new Employee {Id = 3, GivenName = "Petter", Surname = "Liu"}
      43:                         };
      44:          }
      45:   
      46:          public Employee FetchEmployee(int id)
      47:          {
      48:              var employees = FetchEmployees();
      49:              return (from p in employees
      50:                      where p.Id == id
      51:                      select p).First();
      52:          }
      53:      }


    完了。希望这篇POST对您有帮助。

    Author: Petter Liu    http://wintersun.cnblogs.com

  • 相关阅读:
    So easy Webservice 2.WebService介绍
    So easy Webservice 1.Socket建设web服务
    eclipse 实用快捷键
    Memory Layout of C Programs
    C程序员必须知道的内存知识【英】
    闭包,懂不懂由你,反正我是懂了
    什么是闭包,我的理解
    浅析Java中的访问权限控制
    Java访问控制
    Java修饰符public,private,protected及默认的区别
  • 原文地址:https://www.cnblogs.com/wintersun/p/1680863.html
Copyright © 2011-2022 走看看