• 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 = "125px;", onchange = "DH_onChange()" })%> Team Leader<br />团队组长: <%=Html.DropDownList("teamleader_report", null, new { @style = "125px;", onchange = "TL_onChange('')" })%>

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

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

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

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

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

  • 相关阅读:
    openstack生产要素
    None
    nginx优化 tbc
    zabbix开源监控解决方案
    HUGO & Hexo
    mysql数据库-运维合集
    Zabbix Agent ver5.0 批量部署
    CRI containerd
    zabbix聚合图形与Grafana图形展示
    zabbix 监控tomcat
  • 原文地址:https://www.cnblogs.com/kingsony/p/3302895.html
Copyright © 2020-2023  润新知