我在发帖前搜索过这类问题。发现的大多数答案与struts2 jQuery网格无关。这是我的情况:
任何人都可以分享任何解决方案吗?
这是我的代码:
<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}' }"
/>
非常感谢你的帮助。
答案 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=""> </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;
});
}
}
] }"