Hi all I am facing a problem while moving items from one listbox to another
One big problem is here that its text are in parent and child format you can see in attached png.
Here I have no of scenarios to cover which are as follows
1.while moving child text from listbox to another its parent text also move to that listbox.
2.If after moving if that parent item in first listbox contains atleast one item in it it will remain there as well and if it doesnot contain any child in it .it will remove from there and completely shift to second ListBox
3.same is applied to second Listbox but it should goes to back same position.
in my Js and
jsp i have use this code
1. its my jsp file
<form:select name="permissions" path="availablepermissions" multiple="true" class="permission-box" size="2" id="first_id" tabindex="4" style="height:150px">
<%
Map<
String, List<Map<String,String>>> availablePermissions = (Map<String, List<Map<String,String>>>) request.getAttribute("availablePermissions");
//out.write(availablePermissions.toString());
Set<String> keys = availablePermissions.keySet();
Iterator<String> itr = keys.iterator();
while(itr.hasNext()) {
String key = itr.next();
List<Map<String,String>> permissionList = availablePermissions.get(key);
String codeToDisplay = "user.permission." + key;
%>
<li><a href="#"><form:option id='<%=codeToDisplay %>' value='<%=codeToDisplay %>'><label class="permission1"><spring:message code='<%=codeToDisplay %>'/></label></form:option></li></a>
<div>
<%
Iterator<Map<String, String>> permissionsIterator = permissionList.iterator();
while(permissionsIterator.hasNext()) {
Map<String, String> permission = permissionsIterator.next();
Set<String> permissionKeys = permission.keySet();
Iterator<String> permissionKeyIterator = permissionKeys.iterator();
String permissionKey = "";
while(permissionKeyIterator.hasNext()) {
permissionKey = permissionKeyIterator.next();
}
String permissionValue = permission.get(permissionKey);
%>
<a href="#"><form:option id='<%=key%>' value='<%=permissionValue %>'><label> <spring:message code='<%=permissionKey %>'/></label></form:option></a>
<%
}
%>
</div>
<%
}
%>
</ul>
</div>
</div>
</form:select>
<td align="center" valign="middle" style="padding-top:60px;">
<input type="Button" class="greybutton" value=">>" onClick="add(document.getElementById('first_id'),document.getElementById('second_id'))" tabindex="5"><br>
<br>
<input type="Button" class="greybutton" value="<<" onClick="SelectMoveRows(document.getElementById('second_id'),document.getElementById('first_id'))" tabindex="6">
</td>
<td><label class="required"><spring:message code="user.roles.label.selected.permissions"/></label><br />
<form:select name="FeatureCodes" path="permissions" size="9" class="permission-box1" multiple="multiple" id="second_id" tabindex="7" >
</form:select>
</td>
</tr>
</table>
<script language="text/javascript">
function add(LbFrom,LbTo){
//alert(second_id.options[second_id.length-1].value);
alert("Here");
var arrOfGroupParent = new Array();
var arrGroupChild = new Array();
for(i=0; i < LbFrom.options.length; i++){
var idLbFrom = LbFrom.options[i].id;
alert("id"+idLbFrom);
var oldCOId = document.getElementById("idLbFrom");
alert("P" + oldCOId);
var listBox = new Option();
if($("#LbFrom.options[i].id").val() == ""){
arrOfGroupParent[i] = LbFrom.options[i].text;
alert(arrOfGroupParent[i]);
} else if($("#LbFrom.options[i].id").val() != ""){
if(arrOfGroupParent[i] == LbFrom.options[i].id){
arrGroupChild[arrOfGroupParent[i]];
alert(arrGroupChild[arrOfGroupParent[i]]);
}
}
// if(LbFrom.options[i].selected){
// }
}
}
function SelectMoveRows(LbFrom,LbTo)
{
var arrFrom = new Array();
var arrTo = new Array();
var arrLtR = new Array();
var i;
for(i=0; i < LbTo.options.length; i++){
alert("1");
arrLtR[LbTo.options[i].text] = LbTo.options[i].value;
arrTo[i] = LbTo.options[i].text;
}
var fLength = 0;
var tLength = arrTo.length;
for(i = 0; i < LbFrom.options.length; i++) {
//alert("2");
//alert(LbFrom.options[i].id);
// if($("#LbFrom.options[i].id").val() == LbFrom.options[i].id){
// }
arrLtR[LbFrom.options[i].text] = LbFrom.options[i].value;
if (LbFrom.options[i].selected && LbFrom.options[i].value != "") {
alert("3");
arrTo[tLength] = LbFrom.options[i].text;
tLength++;
} else {
//alert("4");
arrFrom[fLength] = LbFrom.options[i].text;
fLength++;
}
}
LbFrom.length = 0;
LbTo.length = 0;
var ii;
for(ii = 0; ii < arrFrom.length; ii++)
{
//alert("5");
//alert(arrFrom[ii]);
//alert(arrLtR[arrFrom[ii]]);
var no = new Option();
no.value = arrLtR[arrFrom[ii]];
no.text = arrFrom[ii];
LbFrom[ii] = no;
}
for(ii = 0; ii < arrTo.length; ii++)
{
alert("6");
var no = new Option();
no.value = arrLtR[arrTo[ii]];
no.text = arrTo[ii];
LbTo[ii] = no;
}