jQuery Ajax MVC 下拉框联动
无刷新下拉框联动方法:
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 下拉框联动的更多相关文章
- SSM框架,在Html界面利用ajax,json,jQuery实现省市区下拉框联动
1.先生成省市区表格 2.建立实体类 3.在html画出下拉框 <select id="province"> <option value="" ...
- MVC 下拉框联动效果(单选)
下拉框联动效果,我们以部门--职位为例,选择部门时,关联到该部门的职位.下拉框的写法就不多说了,详细请参照前文. 视图: 其中,dept是部门的属性,deptlist是部门下拉框的属性,job是职位的 ...
- 使用jquery Ajax异步刷新 下拉框
一个下拉框 <label>产品类型:</label> <select id="protype" name="protype" on ...
- jQuery Ajax实现下拉框无刷新联动
HTML代码: @{ Layout = null; } @using DAL; @using System.Data; @{ AreaDal areaDal = new AreaDal(); stri ...
- 【ASP.NET】 MVC下拉框联动
这个case主要是我在做项目的时候遇到一个需要根据input控件输入的内容,动态填充dropdown list中的内容, 实现二者联动的需求.在搜索了一些资源后,这篇博客解决了我的问题,所以记录并转载 ...
- jquery 实现层级下拉框联动效果 代码
<select name="fCareId" id="fCareId"> <option selected="selected&qu ...
- Ajax jQuery下拉框联动案例
需求: 使用ajax和jQuery实现下拉框联动. 注意:需要加入jquery-2.1.1.min.js 前台 <!DOCTYPE html> <html> <head& ...
- ajax技术实现登录判断用户名是否重复以及利用xml实现二级下拉框联动,还有从数据库中获得
今天学了ajax技术,特地在此写下来作为复习. 一.什么是ajax? 客户端(特指PC浏览器)与服务器,可以在[不必刷新整个浏览器]的情况下,与服务器进行异步通讯的技术 即,AJAX是一个[局部刷新 ...
- Java Swing应用程序 JComboBox下拉框联动查询
在web项目中,通过下拉框.JQuery和ajax可以实现下拉框联动查询. 譬如说,当你查询某个地方时,页面上有:省份:<下拉框省份> 市区:<下拉框市区> 县乡:<下拉 ...
随机推荐
- 解析json串,利用正则表达式,split
public class SplitJson { public static void main(String[] args) { // TODO Auto-generated meth ...
- 即时反应的input和propertychange方法
在web开发中,我们有时会需要动态监听输入框值的变化,当使用onkeydown.onkeypress.onkeyup作为监听事件时,会发现一些复制粘贴等操作用不了,同时,在处理组合快键键的时候也很麻烦 ...
- Python 小练习
输出标题以及长度 结果 输出网页下方学校地理位置以及 输出"abcdefg"base64编码 输出网页内容的MD5 hash
- Windbg使用简明指南
第一章 准备 1.1. 环境配置 _NT_DEBUGGER_EXTENSION_PATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 _NT_SY ...
- 在代码设置RelativeLayout的属性,比如layout_below
( (RelativeLayout.LayoutParams)holder.ivLvDivider.getLayoutParams()).addRule(RelativeLayout.BELOW, R ...
- 使用wait()与notify()实现线程间协作
调用sleep()和yield()的时候锁并没有被释放,而调用wait()将释放锁.这样另一个任务(线程)可以获得当前对象的锁,从而进入它的synchronized方法中.可以通过notify()/n ...
- JavaScript Array对象sort() 方法小结
sort() 方法用于对数组的元素进行排序. 语法arrayObject.sort(sortfunction) 参数sortfunction 可选.规定排序顺序.必须是函数. 返回值对数组的引用.请注 ...
- Microsoft Help Viewer
Microsoft Help Viewer 1.0 Microsoft Help Viewer 2.0 Help Library 管理器 -Microsoft Help 查看器 打开VS 2010 ...
- 深入了解 Scala 并发性
2003 年,Herb Sutter 在他的文章 “The Free Lunch Is Over” 中揭露了行业中最不可告人的一个小秘密,他明确论证了处理器在速度上的发展已经走到了尽头,并且将由全新的 ...
- Solr使用随笔
1) 命令解释 curl 'localhost:8983/solr/update?commit=true' -H 'Contenttype:application/json' -d '[{" ...