中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

使用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

敦化市| 诸暨市| 承德县| 瑞金市| 乐平市| 襄汾县| 澄城县| 高州市| 出国| 宁波市| 民勤县| 泰顺县| 荆门市| 蒲城县| 两当县| 榆社县| 本溪市| 乐安县| 临邑县| 武夷山市| 潼关县| 南华县| 通海县| 鹤庆县| 弥渡县| 京山县| 左云县| 融水| 宜章县| 安阳县| 仙游县| 深水埗区| 盐津县| 大石桥市| 牙克石市| 莫力| 株洲市| 宜宾县| 沽源县| 遂宁市| 左云县|