MVC+knocKout.js 实现下拉框级联

数据库:部门表和员工表

在控制器里面的操作:

 1 public ActionResult Index3()
 2         {
 3             ViewBag.departments = new SelectList(getDepartments(),"d_id","d_name");//部门数据
 4             return View();
 5         }
 6
 7         private List<department> getDepartments()
 8         {
 9             List<department> list = db.department.ToList();
10             return list;
11         }
12
13         public JsonResult GetEmployye(int departmentId)
14         {
15            //通过部门id,获取该部门的员工
16               var list= db.employee.Where(a => a.e_d_id == departmentId).ToList().Select(a => new SelectListItem(){Text = a.e_name,Value = a.e_id+""});
17
18
19             return Json(list,JsonRequestBehavior.AllowGet);
20         }

html里面的实现:

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <script src="~/Scripts/jquery-1.8.2.min.js"></script>
    <script src="~/Scripts/knockout-2.2.0.debug.js"></script>
    <title>Index3</title>
</head>
    <body>
        <div>
            <p>选择部门:@Html.DropDownList("department",ViewBag.departments as SelectList,"请选择",new{onchange="searchEmployee();"})
            </p>
            <p data-bind="visible: selectOptions().length > 0"></p>
            <b style="color:#0094ff">员工:</b>
            <select data-bind="options: selectOptions, optionsText: ‘Text‘, optionsValue: ‘Value‘, optionsCaption: ‘请选择‘"></select>
        </div>
    </body>
    <script type="text/javascript">
        function ViewModel() {
            this.selectOptions = ko.observableArray([]);

        }

        var vm = new ViewModel();
        ko.applyBindings(vm);

        function searchEmployee() {
            var id = $("#department").val();
            $.getJSON(
                "@Url.Action("GetEmployye")",
                { departmentId: id },
                function (data) {
                    vm.selectOptions(data);
                });
        }
    </script>
</html>

效果:

时间: 2024-10-12 21:02:31

MVC+knocKout.js 实现下拉框级联的相关文章

MVC实现多选下拉框

借助Chosen Plugin可以实现多选下拉框. 选择多项: 设置选项数量,比如设置最多允许2个选项: 考虑到多选下拉<select multiple="multiple"...></select>选中项是string数组,Model应该这样设计: using System.Collections.Generic; using System.Web.Mvc; namespace MvcApplication1.Models { public class Car

用JS让下拉框改变网页背景颜色

<HTML> <HEAD> <TITLE>石家庄渣浆泵配件</TITLE> </HEAD> <SCRIPT> <!-- function bgChange(selObj) { newColor = selObj.options[selObj.selectedIndex].text; document.bgColor = newColor; selObj.selectedIndex = -1; } //--> </SC

Jquery+Ajax下拉框级联查询

Jquery代码 <script type="text/javascript">          $(function(){ //提交事件           $("#ImageButton1").click(function(){ //省Id        var provinceId=$("#selProvince").val(); //市Id        var cityId=$("#selCity").

Js获取下拉框选定项的值和文本

Js获取下拉框的值和文本网上提供了2种方法:但有些人很不负责任,他们根本没考虑到浏览器之间的差异导致的错误,导致很多新手琢磨了半天找不出错误! 下面我总结下Firefox和IE下获取下拉框选定项的值和文本: 1. IE和Firefox都支持的方法: 获取文本 var obj=document.getElementById('select_template'); var text=obj.options[obj.selectedIndex].text;//获取文本 var obj=document

ASP.NET MVC 下拉框级联

这个是效果图 首先分析下,我们需要两个下拉框 首先要动态绑定班级的,这个很好实现,怎么让学生下拉框也出来,并显示请选择学生呢? public ActionResult Index() { ViewData["class"] = getByItem(); ViewData["stu"] = new List<SelectListItem>() { new SelectListItem {Text = "请选则学生", Value = &

js设置下拉框选中后change事件无效解决

下拉框部分代码: <select id="bigType"> <option value="">请选择</option> <option value="1">xiamen</option> <option value="2">beijing</option> </select> <select id="smallTy

快速解决js开发下拉框中blur与click冲突

在开发中我们会经常遇到blur和click冲突的情况.下面叙述了开发中常遇到的"下拉框"的问题,并提供了两种解决方案. 一.blur和click事件简述 blur事件:当元素失去焦点时触发blur事件:其为表单事件,blur和focus事件不会冒泡,其他表单事件都可以.click事件:当点击元素时触发click事件:所有元素都有此事件,会产生冒泡. 示例1:blur事件为表单事件 1 2 3 4 5 6 7 8 9 10 11 12 13 <input type="te

基于bootstrap-multiselect.js的下拉框联动

背景:当option特别多时,一般的下拉框选择起来就有点力不从心了,所以使用multiselect是个很好的选择,可以通过输入文字来选择选项很方便,但是有一个需要下拉框联动,网上找了半天才找到解决方法,在此分享一下 1.先引入 <script src="~/Assets/js/bootstrap-multiselect.min.js"></script> <link href="~/Assets/css/bootstrap-multiselect

avalon.js 多级下拉框实现

学习avalon.js的时候,有一个多级下拉框的例子,地址 戳这里 代码实现了联动, 但是逻辑上面理解有点难度,获取选择的值 和 页面初始化 功能存在问题. 在写地图编辑的时候,也用到了多级下拉框,特地整理下例子,其中主要实现的难点就是初始化数组的值. var data = [ {"id": 0, "name": "1公司", "grade": -1, "parentid": "-1"}