博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery Ajax MVC 下拉框联动
阅读量:5910 次
发布时间:2019-06-19

本文共 5344 字,大约阅读时间需要 17 分钟。

无刷新下拉框联动方法:

 

Controllers代码

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

 

后台获取并返回List<SeleceListItem>

public List
Get_TeamLeaderList(string DH_ID) { List
list = new List
(); 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
Get_SalesList(string TL_ID) { List
list = new List
(); 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
"+data[i].Text+""); } }, 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("
"); } }, error: function() { alert("faile to request data"); } })}//

 

前台HTML代码

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

 

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

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

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

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

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

转载于:https://www.cnblogs.com/kingsony/p/3302895.html

你可能感兴趣的文章
spring项目启动执行特定方法
查看>>
web开发原则
查看>>
Unity3d之Animation(动画系统)
查看>>
Python—kmeans算法学习笔记
查看>>
VSS管理
查看>>
原生js库,持续更新中……
查看>>
全身MRI与临床检查在检测早期中轴脊柱关节病患者附着点炎方面一致性差-来自ESTHER临床试验基线水平的...
查看>>
JavaScript标准库之 - Math
查看>>
在Mac上关于tomcat服务器的安装、配置、启动、部署web详细流程
查看>>
内部类实例
查看>>
转:cocos2d-x里的TiledMap出现黑线和抖动的解决方案(不影响其他类使用)
查看>>
GIT
查看>>
Loj #2570. 「ZJOI2017」线段树
查看>>
java String补足
查看>>
HDU - Travel
查看>>
Oracle SQL Lesson (10) - 使用DDL语句创建和管理表
查看>>
序列化有关内容
查看>>
Jmeter变量参数化及函数应用
查看>>
代码整洁之道-第9章-单元测试-读书笔记
查看>>
195. Spring Boot 2.0数据库迁移:Flyway
查看>>