91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

洞头县| 昆明市| 宝兴县| 榆树市| 普宁市| 晋江市| 沧州市| 西盟| 普格县| 合山市| 涡阳县| 汽车| 宜良县| 兴和县| 新龙县| 宁国市| 鲁甸县| 来安县| 贵港市| 米林县| 双城市| 莒南县| 民乐县| 民勤县| 安西县| 富蕴县| 沿河| 斗六市| 古交市| 酉阳| 澎湖县| 日喀则市| 大足县| 永昌县| 文安县| 海盐县| 阿鲁科尔沁旗| 平舆县| 临桂县| 自贡市| 德格县|