亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用grails級聯更新下拉列表

發布時間:2020-07-04 00:19:24 來源:網絡 閱讀:886 作者:kyu610562286 欄目:web開發

    實現級聯更新效果有多種方式,現只介紹用jquery框架的ajax技術實現的方式,個人認為使用jquery的方式更好更靈活,因為它只負責傳數據,如果用grails自帶的異步更新,簡單的還可以,如果是復雜一點的就比較難搞。

下列代碼無需考慮業務意義

jquery的ajax實現:

    1.GSP中_form.gsp的簡略代碼:        

<div>
    <g:select id="company" name="company.id" from="${companyInstanceList}"/>
</div>

<div>
    <g:select id="salaryType" name="salaryType" from="${unassignedType}"/>
</div>

<div>
    <g:select id="operator" name="operator.id" from="${managements}"/>
</div>

    2.javascript代碼
    <script>
    
    $("#company").bind("change", function(){
      $("#salaryType option").remove(); 
      var company = $("#company").val()
      $.ajax({
        url: "findUnassignedType",
        type: "POST",
        data: {'companyId': company} ,
        success: function(result){
        //此處result返回的是一個map,key是salaryType,value是salaryType下的operator選項
              $.each(result, function(key, value){
                $("#salaryType").append("<option value=" + key + ">" + key + "</option>")
                $("#operator option").remove()
                for(var i=0; i < value.length; i++){
                    $("#operator").append("<option value=" + value[i].id + ">" + value[i].name + "</option>")
                }
              });           
        }
      });
    }); 
    $("#company").change();
    
    $("#salaryType").bind("change", function(){
      $("#operator option").remove(); 
      var salaryType = $("#salaryType").val()
      $.ajax({
        url: "findManagements",
        type: "POST",
        data: {'salaryType': salaryType} ,
        success: function(result){
            for(var i=0; i < result.length; i++){
              $("#operator").append("<option value=" + result[i].id + ">" + result[i].name + "</option>")
            }
        }
      });
    }); 
    $("#salaryType").change();
    
    
  })
  
    </script>
    
    3.controller代碼
    /**
     * ajax查詢未分派完的公司的項目種類
     * @Author luoshida
     */
    def findUnassignedType() {
        def cAssigns = CAssign.findAllByCompany(Company.get(params.companyId.toLong()))
        def unassignedType = CAssign.constraints.salaryType.inList
        cAssigns.each{elem ->
            unassignedType = unassignedType - elem.salaryType
        }
        
        Map map = new HashMap()

        unassignedType.each{ elem ->
            List operators = new ArrayList()
            Management.findAllBySalaryTypeAndAssignType(unassignedType.get(0), "企業專管員").each{ elem02 ->
                operators.add(elem02.operator)
            }
            map.put(elem, operators)
        }
        render map as JSON
    }
    
    /**
     * ajax查找項目種類對應的專管員
     * @Author luoshida
     */
    def findManagements() {
        def managements = Management.findAllBySalaryTypeAndAssignType(params.salaryType, "企業專管員")

        List operators = new ArrayList()
        managements.each{ elem ->
            operators.add(elem.operator)
        }
        
        render operators as JSON
    }
    
    注意,返回的時候必須要以JSON字符串的類型返回,此處要導入一個包grails.converters.JSON

    

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

芦山县| 潼南县| 班玛县| 莲花县| 广汉市| 丹棱县| 永兴县| 宜城市| 嵊泗县| 柏乡县| 密云县| 伊宁市| 高密市| 齐河县| 博湖县| 三台县| 南康市| 商南县| 陆川县| 明光市| 衡阳市| 台南县| 灌南县| 六枝特区| 陈巴尔虎旗| 前郭尔| 故城县| 简阳市| 隆化县| 乌拉特中旗| 长汀县| 文成县| 调兵山市| 延寿县| 二连浩特市| 灵璧县| 搜索| 共和县| 昂仁县| 苍溪县| 常熟市|