`
八贤王
  • 浏览: 40301 次
社区版块
存档分类
最新评论

jquery下拉列表四级快速反显

阅读更多
前台:
$('#source').combotree({ 
        url:'${ctx}/dict/pub/dict-tree-box!closedTree2.action?cateEname=source&abc=${carTask.assetsSrcEn}',
        onBeforeLoad:function(node){
        if(node){
        var tree = $('#source').combotree('tree');
        $(tree).tree('options').url='${ctx}/dict/pub/dict-tree-box!closedTree.action?cateEname=source&id='+node.id;
       
        }
        },
        onBeforeSelect:function(node){
//此处用于模拟单选时文件夹不能选择,主要通过后台数据attributes属性来标识
var t =  $('#source').combotree('tree');
if(t.tree('isLeaf',node.target)){
return true ;
}else {
window.setTimeout('source()',0);
return false ;
}
},
onChange:function(newValue, oldValue){

},
onSelect:function(node){

},
        value:"${carTask.assetsSrcEn}",
        panelHeight:400
    });


<select id="source" name="source"  style="width:295px;" class="easyui-validatebox" validType="selectValid['--请选择--']">
  </select>


后台:@Namespace("/dict/pub")
@Results({})
public class DictTreeBoxAction extends ActionSupport {

private static final long serialVersionUID = 7945924152310819279L;

@Autowired
private DataItemManager dataItemManager;

private String cateEname;
private String fatherValue;
private Boolean isShowPrefix;
private String abc;

public Boolean getIsShowPrefix() {
return isShowPrefix;
}

public void setIsShowPrefix(Boolean isShowPrefix) {
this.isShowPrefix = isShowPrefix;
}

public String getCateEname() {
return cateEname;
}

public void setCateEname(String cateEname) {
this.cateEname = cateEname;
}

public String getFatherValue() {
return fatherValue;
}

public void setFatherValue(String fatherValue) {
this.fatherValue = fatherValue;
}



public String getAbc() {
return abc;
}

public void setAbc(String abc) {
this.abc = abc;
}


/*
  */
public String createIds(String[] strs ,int i){
String str = "";
for(int j=0;j<i;j++){
if(j!=i-1){
str += strs[j]+"-";
}else{
str += strs[j];
}

}
return str ;
}

/**
* 反显
* @return
* @throws Exception
*/
public String closedTree2() throws Exception {
String[] strs = abc.split("-");
int length = strs.length-1;
List<DataItem> rootList = createItem(cateEname,"0");
List<TreeNode> rootTreeNodes = createTreeNodeList(rootList,null);

List<TreeNode> treeNodes = new ArrayList<TreeNode>();
for(int i= length ; i>0;i-- ){
if(i==length){
List<DataItem> list = createItem(cateEname,strs[i-1]);
String ids = createIds(strs,i);
treeNodes = createTreeNodeList(list,ids);
}else{
List<DataItem> list = createItem(cateEname,strs[i-1]);
String ids = createIds(strs,i);
String ids1 = createIds(strs,i+1);
List<TreeNode> newtreeNodes =createTreeNodeList(list,ids);
for(TreeNode treeNode: newtreeNodes){
if(treeNode.getId().equals(ids1)){
treeNode.setState("closed");
treeNode.setChildren(treeNodes);
break;
}
}
treeNodes = newtreeNodes;
}
}

for(TreeNode node : rootTreeNodes){
if(node.getId().equals(strs[0])){
System.out.println();
if(length==0){

}else{
node.setState("open");
node.setChildren(treeNodes);
}

break;
}
}



ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().setSerializationInclusion(
Inclusion.NON_NULL);
// 设置输入时忽略JSON字符串中存在而Java对象实际没有的属性
mapper.getDeserializationConfig()
.set(org.codehaus.jackson.map.DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,
false);
String jsonData = mapper.writeValueAsString(rootTreeNodes);
Struts2Utils.getResponse().getWriter().write(jsonData);
return null;
}
/**
* 产生dataitem
* @param cateEname
* @param id
* @return
*/
public List<DataItem> createItem(String cateEname,String id){
return dataItemManager.getDataItemSubList(cateEname,id) ;
}

public List<TreeNode> createTreeNodeList(List<DataItem> itemList,String ids){
List<TreeNode> treeNodes = new ArrayList<TreeNode>();
for (DataItem dataItem : itemList) {
TreeNode treeNode = new TreeNode();
if(ids == null){
treeNode.setId(dataItem.getItemValue());
}else{
    treeNode.setId(ids+"-"+dataItem.getItemValue());
}
treeNode.setText(dataItem.getItemText());
String subFatherValue = dataItem.getItemValue();
List<DataItem> subList = createItem(cateEname,
subFatherValue);
if(subList!=null&&subList.size()>0){
treeNode.setState("closed");
}
treeNodes.add(treeNode);
}
return treeNodes;
}

public String closedTree() throws Exception {


String ids = Struts2Utils.getRequest().getParameter("id");
String id;
if(ids == null){
id = "0";
}else{
    id = ids.substring(ids.lastIndexOf("-")+1);
}
List<TreeNode> treeNodes = new ArrayList<TreeNode>();
List<DataItem> list = dataItemManager.getDataItemSubList(cateEname,id);
for (DataItem dataItem : list) {
TreeNode treeNode = new TreeNode();
if(ids == null){
treeNode.setId(dataItem.getItemValue());
}else{
    treeNode.setId(ids+"-"+dataItem.getItemValue());
}
treeNode.setText(dataItem.getItemText());
String subFatherValue = dataItem.getItemValue();
List<DataItem> subList = dataItemManager.getDataItemSubList(cateEname,
subFatherValue);
if(subList!=null&&subList.size()>0){
treeNode.setState("closed");
}
treeNodes.add(treeNode);
}
ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().setSerializationInclusion(
Inclusion.NON_NULL);
// 设置输入时忽略JSON字符串中存在而Java对象实际没有的属性
mapper.getDeserializationConfig()
.set(org.codehaus.jackson.map.DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,
false);
String jsonData = mapper.writeValueAsString(treeNodes);

Struts2Utils.getResponse().getWriter().write(jsonData);
return null;
}

/**
* 得到所有全部展开的树形下拉列表
*/
public String execute() {
try {
List<TreeNode> treeNodes = new ArrayList<TreeNode>();
List<DataItem> list = dataItemManager.getDataItemSubList(cateEname,
fatherValue);
for (DataItem dataItem : list) {
TreeNode treeNode = new TreeNode();
treeNode.setId(dataItem.getItemValue());
treeNode.setText(dataItem.getItemText());
// treeNode.setIconCls();
// treeNode.setChecked();
String subFatherValue = dataItem.getItemValue();
// List<TreeNode> children = new ArrayList<TreeNode>();
// List<DataItem> subList = dataItemManager.getDataItemSubList(
// cateEname, subFatherValue);
// for (DataItem subDataItem : subList) {
// TreeNode subTreeNode = new TreeNode();
// subTreeNode.setId(subDataItem.getItemValue());
// subTreeNode.setText(subDataItem.getItemValue() + "  "
// + subDataItem.getItemText());
// children.add(subTreeNode);
// }
// treeNode.setChildren(children);
if (isShowPrefix == null) {
isShowPrefix = false;
}
this.recursiveCall(treeNode, cateEname, subFatherValue,
isShowPrefix);
treeNodes.add(treeNode);
}
ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().setSerializationInclusion(
Inclusion.NON_NULL);
// 设置输入时忽略JSON字符串中存在而Java对象实际没有的属性
mapper.getDeserializationConfig()
.set(org.codehaus.jackson.map.DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,
false);
String jsonData = mapper.writeValueAsString(treeNodes);
Struts2Utils.getResponse().getWriter().write(jsonData);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

/**
*
* @param treeNode
* @param cateEname
* @param fatherValue
* @param isShowPrefix
*            显示前缀
*/
public void recursiveCall(TreeNode treeNode, String cateEname,
String fatherValue, Boolean isShowPrefix) {
List<TreeNode> children = new ArrayList<TreeNode>();
List<DataItem> subList = dataItemManager.getDataItemSubList(cateEname,
fatherValue);
for (DataItem subDataItem : subList) {
TreeNode subTreeNode = new TreeNode();
subTreeNode.setId(subDataItem.getItemValue());
if (isShowPrefix) {
subTreeNode.setText(subDataItem.getItemValue() + "  "
+ subDataItem.getItemText());
} else {
subTreeNode.setText(subDataItem.getItemText());
}
children.add(subTreeNode);
recursiveCall(subTreeNode, cateEname, subDataItem.getItemValue(),
isShowPrefix);
}
treeNode.setChildren(children);
}

}
分享到:
评论

相关推荐

    jquery下拉列表特效

    《jQuery下拉列表特效详解与应用》 在Web开发中,下拉列表(Dropdown List)是一种常见的交互元素,用于提供用户选择多个选项的功能。jQuery,作为一款强大的JavaScript库,为开发者提供了丰富的API和插件,使得...

    jquery下拉列表树

    《jQuery下拉列表树详解及应用》 在Web开发中,下拉列表是常见的交互元素,用于提供用户选择项的菜单。然而,传统的下拉列表往往只能展示一级选项,对于层级结构复杂的数据,如部门结构、地区分类等,就显得...

    基于jquery+json的通用四级联动下拉列表.zip

    在IT领域,尤其是在Web开发中,"基于jquery+json的通用四级联动下拉列表"是一个常见的功能需求。这个压缩包文件包含的资源很可能是用于实现这样一个功能的代码示例或框架。下面,我们将深入探讨这一主题,理解其背后...

    jQuery配送地址四级联动代码.zip

    总结来说,jQuery配送地址四级联动代码利用了jQuery的强大功能,实现了动态加载和更新下拉列表,提供了流畅的用户体验。它通过AJAX实现后台数据交互,保证了页面的实时性,同时也减轻了服务器的压力。在实际项目中,...

    jQuery移动端动态四级联动选择面板

    3. **DOM操作**:使用jQuery的DOM操作方法,如`.html()`, `.append()`, `.prepend()`等,来动态更新下拉列表或选择面板的内容。 4. **缓存数据**:为了提高性能,可以将获取到的各级选项数据存储在JavaScript对象或...

    JQuery中国省市区街道三级、四级联动下拉菜单插件

    封装JQuery插件,中国省市区三级联动下拉菜单,省市区街道四级联动下拉菜单插件,三级插件取的值为地区编号或地区名,四级插件默认为地区编号,修改jquery.citys.js中的valueType为“name”,街道单独在代码中修改...

    jquery省市区街道四级联动菜单

    总结来说,“jQuery省市区街道四级联动菜单”是一个便捷的前端解决方案,它利用jQuery的灵活性和Ajax的高效性,帮助开发者快速构建交互性强的地理信息选择组件,而无需复杂的后端支持。只需简单的代码集成,就能实现...

    jQuery手机版四级联动地区代码.zip

    如果是JavaScript文件,它可能包含了实现四级联动的核心逻辑,包括定义事件监听器、处理数据加载和更新下拉列表等操作。如果是JSON文件,则可能存储了地区数据,包括各个级别的名称和关联关系,以便于程序动态生成...

    jQuery4Menus四级菜单设计

    在移动设备上,四级菜单通常会以折叠或下拉列表的形式展示,以优化触摸操作和节省屏幕空间。通过设置适当的CSS样式和JavaScript配置,你可以确保菜单在各种环境下都能保持良好的可用性。 在压缩包"jb51.net"中,...

    jQuery实现的多级级联下拉列表

    本文将深入探讨如何利用jQuery实现多级级联下拉列表,同时结合JSON数据类型和Struts2框架,以创建一个功能丰富的交互式用户界面。 **一、jQuery简介** jQuery是由John Resig于2006年创建的,它的核心设计理念是...

    JQuery实现鼠标滑过显示导航下拉列表

    在实现鼠标滑过显示导航下拉列表的过程中,JQuery为我们提供了方便的API。 要创建这个功能,我们首先要搭建HTML结构。如文中的示例,我们有一个`&lt;p&gt;`标签作为主导航项(`#it`),一个`&lt;ul&gt;`列表作为下拉菜单(`#ul`...

    四级联动,下拉列表的操作

    在IT行业中,"四级联动"通常指的是在一个网页中,四个下拉列表框彼此关联,当一个下拉框的选择改变时,下一个下拉框的内容会根据前一个的选择动态更新,以此类推,直到第四级。这种功能常用于地理信息选择,如省-市-...

    简单jquery下拉菜单流畅版

    ### 知识点一:jQuery下拉菜单的基本概念 #### 定义 jQuery下拉菜单是一种常见的用户界面组件,用于提供额外的导航选项或功能设置。这种菜单在鼠标悬停或点击时出现,并且通常包含一系列子菜单项。 #### 功能 - **...

    JQuery通用四级级联

    **jQuery通用四级级联**是一种基于JavaScript库jQuery实现的交互式选择框功能,它允许用户在四个层次的关联选项中进行选择。这个功能通常用于下拉菜单或者选择列表,例如在地址选择、组织架构或者分类筛选等场景。...

    基于JQuery地区三级联动列表

    4. **动态填充数据**:收到服务器响应后,使用JQuery的`append()`方法将数据添加到下一级别的下拉列表中。同时,需要清空当前下拉列表,以防止重复项。 5. **优化用户体验**:可以通过添加loading提示和错误处理来...

    下拉四级联动插件

    在IT行业中,尤其是在前端开发领域,"下拉四级联动插件"是一种常见且实用的交互设计,主要用于处理如地区选择、分类导航等需要多级筛选的场景。这种插件能够帮助用户通过连续的下拉菜单从最高级别到最低级别进行选择...

    基于jquery的N级下拉联动

    然后,为第一级的下拉列表绑定`change`事件监听器。 3. 事件处理:当用户选择第一级的选项时,触发事件处理函数。在函数内部,根据所选值获取与之关联的第二级选项,并填充到第二个下拉列表中。如果存在第三级,...

    jQuery省市区四级联动菜单.zip

    在Web开发中,常常需要实现省市区三级或四级联动的效果,以便用户在填写地址信息时能快速、准确地选择。jQuery作为一款广泛使用的JavaScript库,提供了丰富的功能和简便的操作方式,使得实现这种联动效果变得简单易...

    jQuery基于citypicker四级联动菜单选择器代码

    在这个项目中,当用户在菜单中做出选择时,jQuery会根据返回的异步数据动态地更新下拉列表的选项。这可以通过DOM操作如`html()`、`append()`或`val()`等方法实现。 **index.html** 是项目的主HTML文件,其中包含了...

Global site tag (gtag.js) - Google Analytics