根据另一个下拉列填充struts2 jQuery grid dropdown列

时间:2014-01-20 20:50:28

标签: jquery drop-down-menu struts2

我在发帖前搜索过这类问题。发现的大多数答案与struts2 jQuery网格无关。这是我的情况:

  1. 我已经在初始加载时动态填充了我的下拉框。
  2. 现在我想根据另一个下拉框中的选择重新加载一个下拉框。
  3. 我正在寻找使用属性/主题的内置解决方案,但我找不到。
  4. 任何人都可以分享任何解决方案吗?

    这是我的代码:

    <sjg:gridColumn
        name="aut"
        index="aut"
        title="AUT"
        width="300"
        sortable="true"
        editable="true"
        edittype="select"
        surl="%{selectautsurl}"
        editoptions="{ dataUrl : '%{selectautsurl}' }"
    
       />
        <sjg:gridColumn
        name="eforms"
        index="eforms"
        title="Page/Eform"
        width="300"
        sortable="true"
        editable="true"
        edittype="select"
        surl="%{selecteformsurl}"
        editoptions="{ dataUrl : '%{selecteformsurl}' }"
        /> 
    

    非常感谢你的帮助。

2 个答案:

答案 0 :(得分:2)

您需要做的是将dataEvents添加到第一个gridColumn,其中更改的值会重新加载第二个gridColumn。你可以这样做,

<s:url id="url_id" namespace="/your_namespace" 
action="action_url_to_get_the_reloaded_list" >

    <sjg:gridColumn
        name="aut"
        index="aut"
        title="AUT"
        width="300"
        sortable="true"
        editable="true"
        edittype="select"
        surl="%{selectautsurl}"
        editoptions="{ dataUrl : '%{selectautsurl}', dataEvents: [type: 'change', fn: function(e) 
    {
                var url= '<s:property value="url_id" />' + '?your_attribute_sent_to_the_back=' + $('input#aut').val();, options;
                $.getJSON(url, function(retVal)
                {
                    options += '<option value="">&nbsp;</option>';
                    $.each(retVal.ur_returned_value, function(index, element)
                    {
                        options += '<option value="' + element.your_value + '">' + element.your_display_value + '</option>';
                    });     
                    $('input#eforms').html(options);
                });         
    }] }"

       />

我没有测试这个解决方案,但我认为它会起作用。

答案 1 :(得分:2)

感谢Uchenna的评论。我接受了它并进行了一些修改,现在它正在运行:

editoptions="{ dataUrl : '%{selectcavsurl}' ,
                                       dataEvents: [
                                       {  type: 'change', fn: function(value) {
                                    var params = 'selectedCAV='+this.value;
                                    $.get('eformsDropdown.action?'+params, function(data) 
                                    {
                                            var dropDown = document.getElementById('eforms');
                                            dropDown.innerHTML = data;
                                    });

                             }
                          }
                      ]     }"