[MVC4-基礎] 連動DropDownList - 使用jQuery、JSON
剛開始學MVC4,以下是一些基礎的學習筆記!
先展示一下結果:
1.選擇申請部門

2.選好後申請部門鎖住防止USER修改並載入該部門所擁有的設備類型

一、資料庫
dept

mf_fx

二、View (Index.cshtml)
@model IEnumerable<LES.Models.Repair>
@{
ViewBag.Title = "Index";
}
<script type="text/javascript">
$(document).ready(function () {
$(".DropDownList").append("<option value='Value'>請選擇</option>"); //預設都加入「請選擇」
$(".DropDownList").change(function () {
//讓下拉選單選中即關閉
$(this).attr("disabled", true);
//取出元素ID
var id = $(this).attr('id');
//根據選中的元素執行相對應的動作
switch (id) {
case "dept": {
//選擇部門後把設備類型資料載入
$(function () {
$.getJSON("/Repair/GetDeviceType?dept=" + dept.value, null, function (data) {//向Controller取得GetDeviceType資料
$.each(data, function (i, itemvalue) {//循環加入item
$("#deviceType").append(
$("<option></option>").val(itemvalue.Value).html(itemvalue.Text))
});
});
});
break;
}
case "deviceType": {
//選擇設備類型後把設備編號資料載入
$(function () {
$.getJSON("/Repair/GetDeviceId?dept=" + dept.value + "&type=" + deviceType.value, null, function (data) {//向Controller取得GetDeviceId資料
$.each(data, function (i, itemvalue) {//循環加入item
$("#deviceId").append(
$("<option></option>").val(itemvalue.Value).html(itemvalue.Text))
});
});
});
break;
}
}
});
});
$(function () {
$.getJSON("/Repair/GetDept", null, function (data) {//向Controller取得GetDept資料
$.each(data, function (i, itemvalue) {//循環加入item
$("#dept").append(
$("<option></option>").val(itemvalue.Value).html(itemvalue.Text))
});
});
});
</script>
<h2>維修申請單</h2>
<p>
@Html.Label("dept","申請部門")
<select class="DropDownList" id="dept" name="dept"></select>
<br />
@Html.Label("deviceType","設備類型")
<select class="DropDownList" id="deviceType" name="deviceType"></select>
<br />
</p>
三、Controller (RepairController.cs)
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LES.Models;
using System.Data.SqlClient;
using System.Configuration; namespace LES.Controllers
{
public class RepairController : Controller
{
string ErpString = ConfigurationManager.ConnectionStrings["ERPConnection"].ConnectionString; //
// GET: /Repair/ public ActionResult Index()
{ SqlConnection DbErp = new SqlConnection(ErpString); //創建資料庫連線
SqlCommand cmd = new SqlCommand("select dep,name from dept",DbErp); //輸入SQL命令
DbErp.Open(); //開啟資料庫連線 var reader = cmd.ExecuteReader(); //取出結果集 List<SelectListItem> depts = new List<SelectListItem>(); while(reader.Read()){ //逐筆讀出資料寫入List
//(0)=dep ; (1)=name
depts.Add(new SelectListItem { Text = reader.GetString(), Value = reader.GetString()});
} DbErp.Close(); //關閉資料庫連線 ViewBag.DeptType = depts; return View();
} // GET: /Repair/GetDept
public JsonResult GetDept()
{
SqlConnection DbErp = new SqlConnection(ErpString); //創建資料庫連線
SqlCommand cmd = new SqlCommand("select dep,name from dept", DbErp); //輸入SQL命令
DbErp.Open(); //開啟資料庫連線 var reader = cmd.ExecuteReader(); //取出結果集 List<SelectListItem> depts = new List<SelectListItem>(); while (reader.Read())
{ //逐筆讀出資料寫入List
//(0)=dep ; (1)=name
depts.Add(new SelectListItem { Text = reader.GetString(), Value = reader.GetString() });
} DbErp.Close(); //關閉資料庫連線 return this.Json(depts, JsonRequestBehavior.AllowGet);
} // GET: /Repair/GetDeviceType?dept=部門代號
public JsonResult GetDeviceType(string dept)
{
SqlConnection DbErp = new SqlConnection(ErpString); //創建資料庫連線
DbErp.Open(); //開啟資料庫連線
SqlCommand cmd = DbErp.CreateCommand(); //創建命令物件
cmd.CommandText = "select distinct name from mf_fx where dep = @dept"; //SQL語句
cmd.Parameters.AddWithValue("dept", dept); //加入@dept參數 var reader = cmd.ExecuteReader(); //取出結果集 List<SelectListItem> types = new List<SelectListItem>(); while (reader.Read())
{ //逐筆讀出資料寫入List
//(0)=name
types.Add(new SelectListItem { Text = reader.GetString(), Value = reader.GetString() });
} DbErp.Close(); //關閉資料庫連線 return this.Json(types, JsonRequestBehavior.AllowGet);
}
}
}
後來更新一下代碼,新的初始狀態如下:

[MVC4-基礎] 連動DropDownList - 使用jQuery、JSON的更多相关文章
- jQuery基礎知識
jQuery基礎知識 $(function(){}) //jQuery先執行一遍再執行其他函數 $(document).ready(fn) //文檔加載完後觸發 1. 刪除$:jQuery.noCon ...
- BootStrap基礎知識
BootStrap基礎知識 1. .lead //突出 .text-left //文字居左 .text-right //文字居右 .text-center //文字居中 .text-justify / ...
- CSS1-3基礎知識
CSS1-3基礎知識 1.css排版 css在html內排版: <style type='text/css'> 標記名{} .類型名{} #ID名{} 標記名,.類型名,#ID名{} &l ...
- Python 基礎 - if else流程判斷
hmm~前面講了那麼多,終於可以稍稍的正式進入另一個階段,沒錯,要開始寫判斷式了 這次先從最簡單的判斷式開始,if else 開始- Go 首先,之前有寫有一個簡單的互動式 用戶輸入 的代碼,忘記了嗎 ...
- GO語言基礎教程:序章
首先自我介紹一下我自己,我是一個coder,目前主要從事B/S程序開發工作,懂點PHP;ASP;JSP;JS;VB;C;DELPHI;JAVA,另外知道幾個數據庫,除此之外別無所長,那麼我為何會選擇學 ...
- JavaScript基礎知識
JavaScript基礎知識 1.標籤組使用 <script charset='utf-8' //設置字元集 defet //使腳本延遲到文檔解析完成,Browser已忽略 language=' ...
- 邁向IT專家成功之路的三十則鐵律 鐵律八:IT人學習之道-基礎功
修練過中國武術的人都知道,任何一種拳法的學習最重要的就是基礎功,而基礎功又可分為內在與外在的修練,內在的修練強調在平心.靜氣.不爭的調息.至於外在這首重在站樁.鬆沉.不疾不徐的應對能力.有了深厚基礎的 ...
- 基于Bootstrap的DropDownList的JQuery组件的完善版
在前文 创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件 中,实现了DropDownList的JQuery组件,但是留有遗憾.就是当下拉菜单出现滚动条的时候,滚动条会覆 ...
- 创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
Bootstrap是当下流行的前端UI组件库之一.利用Bootstrap,可以很方便的构造美观.统一的页面.把设计师从具体的UI编码中解放出来. Bootstrap提供了不少的前端UI组件.带下拉 ...
随机推荐
- 初探CSS
css基本框架 index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- 序列化和持久化 merge方法和saveOrUpdate方法
merge方法和saveOrUpdate方法的区别 merge方法是把我们提供的对象转变为托管状态的对象:而saveOrUpdate则是把我们提供的对象变成一个持久化对象:说的通俗一点就是:saveO ...
- javascript 闭包的理解
1 需要明白概念: 执行环境 变量对象,活动对象 作用域,作用域链 闭包 垃圾处理机制 闭包陷阱
- 关于看似简单的eclipse中tomcat小猫图标消失的问题解决
首先,这个问题出现在我新安装的虚拟机中,自己准备重新搭一套开发环境用于学习. 所以,出于好奇,自己从官网上把eclipse的最新版neo下下来尝尝鲜,刚安装好后发现与之前用的旧版基本相同,于是把相应的 ...
- angularjs中ng-switch的用法
<!DOCTYPE html> <html lang="zh-CN" ng-app="app" ng-controller="ctr ...
- 编译osg for android
做osg数数已经快两年了,之前将一些opengl的代码搬到了osg上,现在将一些osg的代码搬到了android上,尝试看看效果. 首先是编译的事情,android for android在http: ...
- PclZip:强大的PHP压缩与解压缩zip类
PclZip简介PclZip是一个很强大的压缩与解压缩zip文件的PHP类,PclZip library能够压缩与解压缩Zip格式的压缩档(WinZip.PKZIP):且能对此类类档案进行处理,包括产 ...
- php对象中类的继承性访问类型控制
类型的访问控制通过使用修饰符允许开发人员对类中成员的访问进行限制.这是PHP5的新特性,也是OOP语言中的重要特性,大多数OOP语言都已支持此特性.PHP5支持如下三种访问修饰符,在类的封装中我们已经 ...
- linux pc syncy安装问题
linux pc 上安装syncy遇到的坑 pycurl安装可以指定curl-config,这个是根据自己机器libcurl安装位置确定,不在默认位置时要指定:python setup.py inst ...
- Oracle 提示密码过期问题:the password will expire
SQL> conn scott/tiger ERROR: ORA: the password will expire within days Connected. SQL> conn /a ...