2014-03-27 13 views
1

因此,即時通訊使用2個下拉列表,其中第二個應該從服務器根據第一個選定的項目從服務器獲取項目,問題是,這隻能在第一個timei單擊子droplist,這意味着如果我更改父列表項,子項仍將顯示以前的項目。什麼是我的劍道級聯下拉列表失敗。只有第一次工作

下面是一些代碼:

kendofi=function (index){ 
    //kendofi select boxes 
    $("#dynamicFormLinha"+index).kendoDropDownList({ 
     name:"formularios", 
     optionLabel: "Formulario", 
     dataTextField: "name", 
     dataValueField: "id", 
     dataSource: { 
      type: "json", 
      serverFiltering: true, 
      transport: { 
       read: "${pageContext.request.contextPath}" + "/newlayout/mySearchesDynForms.do" 
      }, 
      schema: { 
       model: { 
        fields: { 
         id: { type: "number" }, 
         name: { type: "string" } 
        } 
       } 
      } 
     } 
    }).data("kendoDropDownList"); 

    $("#campoFormLinha"+index).kendoDropDownList({ 
     autoBind:false, 
     name:"campos", 
     optionLabel: "Campo", 
     dataTextField: "name", 
     dataValueField: "id", 
     dataSource: { 
      type: "json", 
      serverFiltering:true, 
      transport: { 

       read:{ 
        url:"${pageContext.request.contextPath}" + "/newlayout/mySearchesFormFieds.do", 
        data:function(){ 

         return {formId: $("#dynamicFormLinha"+index).val() 
         }; 
        } 
       } 
      } 
     }, 
     cascadeFrom: "dynamicFormLinha1", 
     schema: { 
      model: { 
       fields: { 
        id: { type: "number" }, 
        name: { type: "string" } 
       } 
      } 
     } 
    }).data("kendoDropDownList"); 

而這裏的每一個下拉列表中的Java春天控制器類方法:

@RequestMapping(method = RequestMethod.GET, value="/newlayout/mySearchesDynForms") 
public @ResponseBody 
DynamicFormTemplateDPO[] getForms(){ 
return dynamicFormService.getAllActiveFormTemplatesForPresentation(); 
} 

@RequestMapping(method = RequestMethod.GET, value="/newlayout/mySearchesFormFieds") 
public @ResponseBody 
DynamicFieldTemplateDPO[] getFormFields(@RequestParam long formId){ 
    return dynamicFormService.getFormFields(formId); 
} 

這些都返回JSON數據中,父子返回此:

[{"id":1,"name":"drcie"},{"id":2,"name":"edp"},{"id":3,"name":"pt"}] 

然後,所選的id將用作getFormFields方法中的formId參數d,返回是這樣的:

[{"id":1,"name":"Nome","type":"STRING"},{"id":2,"name":"Morada","type":"STRING"},{"id":3,"name":"Contribuinte","type":"STRING"},{"id":4,"name":"Multibanco","type":"STRING"}] 

這裏的kendofi方法,是因爲這些部件是表內,您可以在保持部件的功能添加新的錶行。

回答

1

我有同樣的問題。我們設法通過將父母和子女下拉列表放在一個函數中來解決這個問題。請參閱下面的buildLookupDropDownList()函數。看起來在我們的情況下,孩子dropdownlists被稱爲父母之前。好運

var categories 
function buildLookupDropDownList() { 
    categories = $("#LOOKUP_OBJECT_ID").kendoDropDownList({ 
     optionLabel: "@Resources.Global.Builder_Parameter_SelLookup", 
     dataTextField: "OBJECT_NAME", 
     dataValueField: "OBJECT_ID", 
     dataSource: lookupDS, 
    }).data("kendoDropDownList"); 

    var products = $("#DISPLAY_FIELD").kendoDropDownList({ 
     autoBind: false, 
     cascadeFrom: "LOOKUP_OBJECT_ID", 
     optionLabel: "@Resources.Global.Builder_Parameter_SelDisplay", 
     dataTextField: "DISPLAY_LABEL", 
     dataValueField: "FIELD_NAME", 
     dataSource: { 
      serverFiltering: true, 
      transport: { 
       read: 
        { 
         url: '@Url.Action("GetFields", "Object")', 
         type: "GET", 
         contentType: "application/json; charset=utf-8", 
         dataType: "json", 
         data: function() { 

          var lookuplist = $("#LOOKUP_OBJECT_ID").data("kendoDropDownList"); 
          return { OBJECT_ID: lookuplist.value() }; 
         } 
        } 
      }, 
      schema: { 
       data: function (data) { //specify the array that contains the data 
        return data.data || data; 
       } 
      } 

     } 
    }).data("kendoDropDownList"); 

    var orders = $("#VALUE_FIELD").kendoDropDownList({ 
     autoBind: false, 
     cascadeFrom: "DISPLAY_FIELD", 
     optionLabel: "@Resources.Global.Builder_Parameter_SelValue", 
     dataTextField: "DISPLAY_LABEL", 
     dataValueField: "FIELD_NAME", 
     dataSource: { 
      serverFiltering: true, 
      transport: { 
       read: 
        { 
         url: '@Url.Action("GetFields", "Object")', 
         type: "GET", 
         contentType: "application/json; charset=utf-8", 
         dataType: "json", 
         data: function() { 

          var lookuplist = $("#LOOKUP_OBJECT_ID").data("kendoDropDownList"); 

          return { OBJECT_ID: lookuplist.value() }; 
         } 
        } 
      }, 
      schema: { 
       data: function (data) { //specify the array that contains the data 
        return data.data || data; 
       } 
      } 

     } 
    }).data("kendoDropDownList"); 
} 
+0

對不起,我遲到的反應,我想我設法讓它通過刪除name屬性,這是造成一些問題的工作......但生病標記給您迴應,因爲我應該做了我自己的回答.... – Maxrunner