[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组件.带下拉 ...
随机推荐
- [Linux命令]tar命令
tar 命令的解释: tar(bsdtar): manipulate archive files First option must be a mode specifier: -c Create -r ...
- less样式表
LESS是一种由Alexis Sellier设计的动态层叠样式表语言.受Sass所影响,同时也影响了Sass的新语法:SCSS.[2] LESS是开源的,其第一个版本由Ruby写成,但在后续的版本当 ...
- 【转】tkinter实现的文本编辑器
此代码是看完如下教学视频实现的,所以算是[转载]吧: 效果: 代码: # -*- encodin ...
- [C#]asp.net开发微信公众平台----目录汇总-持续更新
1.[c#]asp.net微信公众平台开发(1)数据库设计 2.[c#]asp.net微信公众平台开发(2)多层架构框架搭建和入口实现 3.[c#]asp.net微信公众平台开发(3)微信消息封装及反 ...
- MVC 4.0项目部署在IIS上无法浏览的解决方案
本文属于原创,转载请标明出处! MVC 4.0发布后部署到IIS上可能出现无法浏览的问题,浏览器报403的错误. 解决方法是:只需在web.config配置文件里的<system.webServ ...
- WebBrowser.ExecWB方法
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- php多文本框提交
<form action="" method="post"><input type=text name=name[]><input ...
- 带权并查集 poj1182
首先要注意核心代码 int find(int i){ if(i == fa[i]) return fa[i]; int tt = find(fa[i]); num[i] ...
- poj3685 二分套二分
F - 二分二分 Crawling in process... Crawling failed Time Limit:6000MS Memory Limit:65536KB 64bit ...
- 字符串编码---hash函数的应用
之前就听说过有个叫做hash表的东西,这段时间在上信息论与编码,也接触了一些关于编码的概念,直到今天做百度之星的初赛的d题时,才第一次开始学并用hash 一开始我用的是mutimap和mutiset, ...