2014-03-27 12 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