多级数据选择操作在开发中是常见的操作,比如选择行业信息时,一般有个大类,每个大类下边又包含很多小类,本文简单实现了弹出窗口一级一级选择功能。

本文博客出处:http://www.kwstu.com/ArticleView/admin_201392163458545 转载请注明!

一、效果图:

二、页面代码

    <script src="../../Content/Js/selectlist.js"></script>

    <script src="../../Content/Js/systools.js"></script>

    <link href="../../Content/Css/kwstu.ui.css" rel="stylesheet" />

    <script src="../../Content/Js/jquery.divbox.js"></script>

@Html.EditorFor(model => model.TRADENAME)@Html.HiddenFor(model => model.TRADEID)

三、JS代码

1、JS调用代码

$("#TRADENAME").focus(function () { GetTrade($(this).val(), "TRADENAME", "TRADEID", "/SysTools/GetFirstTradeList", "/SysTools/QueryLastTradeList", "/SysTools/GetOtherTradeList"); });

2、JS执行代码

//行业选择

    function GetTrade(message, tmp1, tmp2, tmp3, tmp4, tmp5) {

        name1 = tmp1; name2 = tmp2; url1 = tmp3; url2 = tmp4; url3 = tmp5;

        //设置异步传输参数

        var option = {

            url: url1,

            type: 'Get',

            chche: false,

            dataType: 'json',

            data: { Message: message }, //发送服务器数据

            success: function (data) {  //成功事件

                $("#kwstu_select ul li").die();

                $("#kwstu_select").remove();

                iptName = $(this).attr("id");

                //var iptOffSet = $("#TRADENAME").offset();

                //var iptLeft = iptOffSet.left;

                //var iptTop = iptOffSet.top + 20;

                var str = "<div id='kwstu_select'><span>请选择行业<a id='fh'>返回第一层列表</a>&nbsp;&nbsp;&nbsp;&nbsp;快速查 找:<input id='kquery' type='text'/><font color=red>支持拼音首字母查询</font><a id='gb'>[&nbsp;关闭&nbsp;]</a></span><div id=info></div><ul></ul></div>";

                var str2 = "";

                $.each(data, function (i, item) {

                    str2 = str2 + "<li id='" + data[i].Value + "'>" + data[i].Text + "</li>";

                });

                $("body").append(str);

                  $("#kwstu_select ul").append(str2);

                //$("#kwstu_select").css({ left: iptLeft + "px", top: iptTop + "px" });

                $("#kwstu_select span a#fh").bind("click", function () {

                    $("#kwstu_select ul").empty();

                    $("#info").empty();

                    $("#info").hide();

                    $("#kwstu_select ul").append(str2);

                });

                $("#kwstu_select span a#gb").bind("click", function () {

                    $("#kwstu_select").CloseDiv();

                });

                $("#kwstu_select").OpenDiv();

                //查询输入框获得焦点

                $('#kquery').focus();

                //快速查询

                $("#kquery").focus(function () {

                    var bind_name = 'input';

                    if (navigator.userAgent.indexOf("MSIE") != -)

                    { bind_name = 'propertychange'; }

                    $(this).bind(bind_name, function () {

                        var liId = $(this).attr("id");

                        var liText = $(this).val();

                        $("#info").show();

                        if (liText != "") {

                            var option = {

                                url: url2,

                                type: 'Get',

                                dataType: 'json',

                                data: { Message: liText }, //发送服务器数据

                                success: function (data) {  //成功事件

                                    listr = "";

                                    $.each(data, function (i, item) {

                                        listr = listr + "<li id='" + data[i].Value + "'>" + data[i].Text + "</li>";

                                    });

                                    $("#kwstu_select ul").empty();

                                    $("#kwstu_select ul").append(listr);

                                },

                                error: function (XMLHttpRequest, textStatus, errorThrown) { //发送失败事件

                                    alert(textStatus);

                                }

                            };

                            //进行异步传输

                            $.ajax(option);

                        }

                    })

                })

                $("#kwstu_select ul li").live("click", liBind);

            },

            error: function (XMLHttpRequest, textStatus, errorThrown) { //发送失败事件

                alert(textStatus);

            }

        };

四、后台代码

///////////////////////////////行业联动下拉列表//////////////////////

      /// 第一层行业

      public ActionResult GetFirstTradeList(string message)

      {

          List<TSSYS_TRADE_BANK> list = db.TSSYS_TRADE_BANK.Where(c=>c.PID=="ROOT").OrderBy(c=>c.ID).ToList();

          TSSYS_TRADE_BANK empty = new TSSYS_TRADE_BANK();

          SelectList pList = new SelectList(list, "ID", "NAME");

          return Json(pList, JsonRequestBehavior.AllowGet);

      }

      /// 第一层以后的行业

      public ActionResult GetOtherTradeList(string message)

      {

          List<TSSYS_TRADE_BANK> list = db.TSSYS_TRADE_BANK.Where(c => c.PID == message).OrderBy(c => c.ID).ToList();

          SelectList pList = new SelectList(list, "ID", "NAME");

          return Json(pList, JsonRequestBehavior.AllowGet);

      }

      /// 快速查询

      public ActionResult QueryLastTradeList(string message)

      {

          List<TSSYS_TRADE_BANK> list = db.Database.SqlQuery<TSSYS_TRADE_BANK>("Select ID,NAME,PID,SUBCLASSNO,SORT,ORDERNUM,EFFECT,ISSUB from TS.TSSYS_TRADE_BANK where (py(name) like '%" + message.ToUpper() + "%' or name like '%" + message + "%') and id not in (select pid from tssys_trade_bank) order by id").ToList();

          SelectList pList = new SelectList(list, "ID", "NAME");

          return Json(pList, JsonRequestBehavior.AllowGet);

      }

五、相关资源下载

http://www.kwstu.com/ResourcesView/admin_201392163048177

ASP.NET MVC页面UI之多级数据选择UI(行业信息、专业信息、职位信息的选择)的更多相关文章

  1. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序更新相关数据

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第八篇:为ASP.NET MVC应用程序 ...

  2. ASP.NET MVC应用程序更新相关数据

    为ASP.NET MVC应用程序更新相关数据 这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译, ...

  3. 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图与控制器传递数据

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  4. 【ASP.NET MVC系列】浅谈数据注解和验证

    [ASP.NET MVC系列]浅谈数据注解和验证   [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google C ...

  5. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序读取相关数据

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第七篇:为ASP.NET MVC应用程序 ...

  6. 解析ASP.NET Mvc开发之删除修改数据

    目录: 1)从明源动力到创新工场这一路走来 2)解析ASP.NET WebForm和Mvc开发的区别 3)解析ASP.NET Mvc开发之查询数据实例 4)解析ASP.NET Mvc开发之EF延迟加载 ...

  7. ASP.NET MVC 5 学习教程:数据迁移之添加字段

    原文 ASP.NET MVC 5 学习教程:数据迁移之添加字段 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符 ...

  8. Asp.Net MVC页面静态化功能实现一:利用IHttpModule,摒弃ResultFilter

    上一篇有提到利用IHttpModule和ResultFilter实现页面静态化功能.后来经过一些改动,将ResultFilter中要实现的功能全部转移到IHttpModule中来实现 Asp.Net ...

  9. Asp.Net MVC页面静态化功能实现一:利用IHttpModule和ResultFilter

    由于公司现在所采用的是一套CMS内容管理系统的框架,所以最近项目中有一个需求提到要求实现页面静态化的功能.在网上查询了一些资料和文献,最后采用的是小尾鱼的池塘提供的 利用ResultFilter实现a ...

  10. 为ASP.NET MVC应用程序读取相关数据

    为ASP.NET MVC应用程序读取相关数据 2014-05-08 18:24 by Bce, 299 阅读, 0 评论, 收藏, 编辑 这是微软官方教程Getting Started with En ...

随机推荐

  1. 算法题C#

    几个大公司(IBM.MicroSoft and so on)面试经典数据结构与算法题C#解答 1.链表反转 我想到了两种比较简单的方法 第一种是需要开一个新的链表,将原链表的元素从后到前的插入到新链表 ...

  2. MySQL编程(0) - Mysql中文乱码问题解决方案

    MySQL 5.6 for Windows 解压缩版配置安装: http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html MySQL ...

  3. gnu 扩展之#和##

    转自:http://chongsoft.bokee.com/5816474.html 今天测试了宏定义中的 "#" 和 "##" 的区别. 结果如下: &quo ...

  4. 响应式web前端框架Foundation & Bootstrap 对比

    Foundation & Bootstrap都是易用.强大且灵活的前端框架,用于构建基于任何设备上的 Web 应用.提供流式布局,及多种 js UI 组件,如导航.表单.按钮.Tabs 等等. ...

  5. 微软不也是从Altair Basic这丑小鸭长成白天鹅吗?

    微软不也是从Altair Basic这丑小鸭长成白天鹅吗? February 2015 如果你想要弄清楚初创企业是怎么一回事的话,其中一个非常有价值的尝试是去研究下那些获得巨大成功的公司,去分析下为什 ...

  6. MySQL安装指南

    近期领导突然说要用MySQL,我立刻当天晚上就研究了一下. http://www.mysql.com/这是官网,还好能够訪问.好多年前已经被oracle收购.分为企业版和社区版: MySQL Ente ...

  7. 如果在VMware上免费下载驱动

    1.在不登录,或者没有账号的情况下,进入VMare的驱动下载界面,可以发现有一个大大的Download按钮. 2.点这个按钮,会提示登录. 3.注册账号登录后,回到驱动下载界面,会发现Download ...

  8. location将地址栏参数拆分成键值对的对象

    window.location可获取地址栏的一系列信息,并且每个浏览器都支持该属性,非常方便.而获取到的问号后面的参数可以进行加工转变成我们所想要的键值对. location的属性: 属性名 例子 说 ...

  9. [译]Java 设计模式之迭代器

    (文章翻译自java-design-pattern-iterator) 迭代器模式用于迭代遍历一个集合对象.它是一个经常被用到的模式,你可能以前使用过它.不管在任何时候你看见一些方法像hasNext( ...

  10. cocos2d的-X- luaproject的LUA脚本加密

    2014/1/26 更新 近期又发现了一个非常easy的方法,事实上coco2dx已经给我们提供设置loader的方法. 注意:有个局限性,在非android平台下调用pEngine->exec ...