无刷新下拉框联动方法:

Controllers代码

       public JsonResult DH_Change(string DH_ID)
{
List<SelectListItem> TeamLeaderList = FinanceDB.Get_TeamLeaderList(DH_ID);
return Json(TeamLeaderList);
} public JsonResult TL_Change(string TL_ID)
{
List<SelectListItem> SalesList = FinanceDB.Get_SalesList(TL_ID);
return Json(SalesList);
}

后台获取并返回List<SeleceListItem>

public List<SelectListItem> Get_TeamLeaderList(string DH_ID)
{
List<SelectListItem> list = new List<SelectListItem>();
list.Add(new SelectListItem { Value = "", Text = "All" }); string str = "SELECT distinct child_Staff_ID, child_name ";
str += "FROM VW_CASH_SLX_USER_TREE t inner join SYN_SLX_USERINFO u ";
str += "ON t.child_Staff_ID = u.cash_staff_id ";
str += "INNER JOIN dbo.SYN_SLX_USERSECURITY su on u.userid = su.userid ";
str += "where su.ISMANAGER = 'T' and ISNULL(child_staff_id, '') <> '' "; if (string.IsNullOrEmpty(DH_ID))
{
str += "and t.Root_Staff_ID in (select parm_value from parm_tbl where parm_group = 'SALES_DEPT_HEADER') order by child_name";
}
else
{
str += "and t.Root_Staff_ID in ('" + DH_ID + "') order by child_name";
} try
{
using (SqlConnection conn = new SqlConnection(connstr))
{
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = str;
cmd.CommandType = CommandType.Text;
SqlDataReader objDR = cmd.ExecuteReader(); while (objDR.Read())
{
string select_text = objDR["child_name"].ToString();
string select_value = objDR["child_Staff_ID"].ToString();
list.Add(new SelectListItem { Value = select_value, Text = select_text });
} cmd.Dispose();
}
}
catch (Exception e)
{
throw e;
}
return list;
} public List<SelectListItem> Get_SalesList(string TL_ID)
{
List<SelectListItem> list = new List<SelectListItem>();
list.Add(new SelectListItem { Value = "", Text = "All" }); string str = "SELECT distinct child_Staff_ID, child_name ";
str += "FROM VW_CASH_SLX_USER_TREE t ";
str += "where ISNULL(child_staff_id, '') <> '' and ";
str += "t.Root_Staff_ID in ( "; if (string.IsNullOrEmpty(TL_ID))
{
str += "select parm_value from parm_tbl where parm_group = 'SALES_DEPT_HEADER' ) order by child_name ";
}
else
{
str += "'" + TL_ID + "') order by child_name";
} try
{
using (SqlConnection conn = new SqlConnection(connstr))
{
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = str;
cmd.CommandType = CommandType.Text;
SqlDataReader objDR = cmd.ExecuteReader(); while (objDR.Read())
{
string select_text = objDR["child_name"].ToString();
string select_value = objDR["child_Staff_ID"].ToString();
list.Add(new SelectListItem { Value = select_value, Text = select_text });
} cmd.Dispose();
}
}
catch (Exception e)
{
throw e;
}
return list; }

Ajax 动态更新

// Report sales change.
function DH_onChange() {
var dh_id = $("#salesdephead_report").val();
$.ajax({
type: 'get',
url: '/Reports.mvc/DH_Change/',
data: { DH_ID: dh_id },
contentType: 'application/json;charset=uft-8',
dataType: 'json',
success: function(data) {
var selectlist =data;
$("#teamleader_report").empty();
for(i=0;i<selectlist.length;i++)
{
$("#teamleader_report").append("<option value='"+data[i].Value+"'>"+data[i].Text+"</option>");
}
},
error: function() {
alert("faile to request data");
}
});
TL_onChange(dh_id);
} function TL_onChange(DH_ID) {
var tl_id;
if (DH_ID != null && DH_ID != "")
tl_id = $("#salesdephead_report").val();
else
tl_id = $("#teamleader_report").val();
$.ajax({
type: 'post',
url: '/Reports.mvc/TL_Change/',
data: { TL_ID: tl_id },
dataType: 'json',
success: function(data) {
var selectlist = data;
$("#requester_report").empty();
for (i = 0; i < selectlist.length; i++) {
$("#requester_report").append("<option value='" + data[i].Value + "'>" + data[i].Text + "</option>");
}
},
error: function() {
alert("faile to request data");
}
})
}
//

前台HTML代码

Sales Department Head<br />销售部门审批人:
<%=Html.DropDownList("salesdephead_report", null, new { @style = "width:125px;", onchange = "DH_onChange()" })%> Team Leader<br />团队组长:
<%=Html.DropDownList("teamleader_report", null, new { @style = "width:125px;", onchange = "TL_onChange('')" })%>

但是我们都知道,JQuery默认是异步执行的,所谓异步就是在ajax提交的过程当中,程序已经在执行下面的代码,两者是同时在进行的。有时候,我们却不希望ajax异步执行,而是想要等ajax返回数据后再作操作,那就需要做一点点的小改动。

Jquery的ajax还有async这么一个控制同步或者异步的属性。

再ajax中添加“ async:false, ”, 就会变成是同步执行了,也就是再ajax返回数据后才继续下面的代码。

其实除了修改属性async的方法外,还能通过传入一个函数解决问题。

以上,是今天所用到得一点知识,希望记录下有帮助到人啦。

jQuery Ajax MVC 下拉框联动的更多相关文章

  1. SSM框架,在Html界面利用ajax,json,jQuery实现省市区下拉框联动

    1.先生成省市区表格 2.建立实体类 3.在html画出下拉框 <select id="province"> <option value="" ...

  2. MVC 下拉框联动效果(单选)

    下拉框联动效果,我们以部门--职位为例,选择部门时,关联到该部门的职位.下拉框的写法就不多说了,详细请参照前文. 视图: 其中,dept是部门的属性,deptlist是部门下拉框的属性,job是职位的 ...

  3. 使用jquery Ajax异步刷新 下拉框

    一个下拉框 <label>产品类型:</label> <select id="protype" name="protype" on ...

  4. jQuery Ajax实现下拉框无刷新联动

    HTML代码: @{ Layout = null; } @using DAL; @using System.Data; @{ AreaDal areaDal = new AreaDal(); stri ...

  5. 【ASP.NET】 MVC下拉框联动

    这个case主要是我在做项目的时候遇到一个需要根据input控件输入的内容,动态填充dropdown list中的内容, 实现二者联动的需求.在搜索了一些资源后,这篇博客解决了我的问题,所以记录并转载 ...

  6. jquery 实现层级下拉框联动效果 代码

    <select name="fCareId" id="fCareId"> <option selected="selected&qu ...

  7. Ajax jQuery下拉框联动案例

    需求: 使用ajax和jQuery实现下拉框联动. 注意:需要加入jquery-2.1.1.min.js 前台 <!DOCTYPE html> <html> <head& ...

  8. ajax技术实现登录判断用户名是否重复以及利用xml实现二级下拉框联动,还有从数据库中获得

    今天学了ajax技术,特地在此写下来作为复习. 一.什么是ajax? 客户端(特指PC浏览器)与服务器,可以在[不必刷新整个浏览器]的情况下,与服务器进行异步通讯的技术  即,AJAX是一个[局部刷新 ...

  9. Java Swing应用程序 JComboBox下拉框联动查询

    在web项目中,通过下拉框.JQuery和ajax可以实现下拉框联动查询. 譬如说,当你查询某个地方时,页面上有:省份:<下拉框省份> 市区:<下拉框市区> 县乡:<下拉 ...

随机推荐

  1. 最佳的 14 个免费的响应式 Web 设计测试工具

    一旦你决定要搭建一个网站就应该已经制定了设计标准.你认为下一步该做什么呢?测试!我使用“测试”这个词来检测你网站对不同屏幕和浏览器尺寸的响应情况.测试在响应式网页设计的过程中是很重要的一步.如果你明白 ...

  2. Debian8.2 安装搜狗输入法

    搜狗输入法linux版本的推出,让linux的桌面使用变得更加顺手了,我之前一直就很想体验一下Linux下的搜狗输入法了,不过我对Linux系统使用还是个菜鸟,安装个输入法的简单事情也费了一番功夫. ...

  3. JavaWeb 自定义404页面

    本来,Tomcat中自定义404页面不过是在web.xml文件中写4行代码的事情. 直接引用 Tomcat官方FAQ 怎样自定义404页面? 编辑web.xml <error-page> ...

  4. python 基本语法

    第一个python程序 打开Sublime Text -->输出 print"Hello World" -->保存为frist.py -->打开命令行运行,运行p ...

  5. ant学习简单例子

    1.下载ant,http://ant.apache.org/ 这个网站下载,然后配置环境变量 打开dos界面,输入ant -version,如果提示命令不存在,进入到ant包装目录bin下载,再次运行 ...

  6. DEVExpress GridControl|TableView |FormatConditions 按一定格式设置相应内容

    Get到一个新技能,感觉好棒.摘自DEV官网:https://www.devexpress.com/Support/Center/Example/Details/T135593 <Window ...

  7. 深入浅出Mybatis系列(五)---TypeHandler简介及配置(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)>为大家介绍了mybatis中别名的使用,以及其源码.本篇将为大家介绍TypeH ...

  8. performSelector和performSelectorInBackground

    前者是在主线程下完成的, 不会自动创建一个线程. 后者会创建一个新的线程.

  9. React Native 获取网络数据

    getMoviesFromApiAsync() { return fetch('http://facebook.github.io/react-native/movies.json') .then(( ...

  10. F2.Net工作流引擎系列索引

    索引如下 F2工作流引擎遵循参考WFCM标准规范,符合中国国情特色,更轻量级的工作流引擎,支持多种数据库(mmsqlserver,mysql,oracle),有强大智能的组织模型接口可快速应用到任何基 ...