承元多级动态选择树的接口开发示例
发布日期:2010-6-13 信息来源:http://www.chysoft.net

功能说明:
1、以动态目录树的方式进行选择
2、选择的内容在接口实现类中实现
3、具体步骤
   A、编写接口实现类
   B、在资源管理的参数配置的一般参数中配置参数和接口实现类名
   C、使用系统提供的界面程序进行调用

一、 编写接口实现类,需继承A_CommonSelector类
 /**
  * 返回下级节点的菜单
  * @return
  */
 public ArrayList getSubNodeElement(String parameter);
 
 /**
  * 返回列叶节点的元素
  * @param parameter
  * @return
  */
 public ArrayList getPageElement(String parameter);
 
 /**
  * 根据参数返回已经选择的对象
  * @param parameter
  * @return
  */
 public ArrayList getSelectedElements(String parameter);
 
 /**
  * 是否支持多选
  * @return
  */
 public boolean isMultiSelect();
 
 /**
  * 返回根名称
  * @return
  */
 public String getRootName();
 
 /**
  * 返回css样式文件,
  * @return
  */
 public String getHtmlCss();
 
 /**
  * 设置语言相关
  * @param language
  */
 public void setLanguage(String language);

具体要求
1、选中的值的内容有NodeElement 的setValue决定,不要包含,号
2、NodeElement 的setCanSelect方法设置元素是否可以选中
(具体见附:接口实现类)

二、 定义参数
进入资源管理,在其他参数(只能是其他参数)中定义以下类似的参数,
参数名称:org
参数值是接口实现类:net.sysplat.access.external.OrganizeSelector
“刷新”后是配置参数生效

三、调用模式
使用模态窗口调用,示例(组织部门的调用):
http://localhost:8080/sysplat/access/selector.jsp?p=org,其中org对应一般参数的参数名称
 
如果使用了需要使用根节点的参数,则url中增加ID参数,
http://localhost:8080/sysplat/access/selector.jsp?p=org&id=XXXX,
(目前net.sysplat.access.external.OrganizeSelector实现了组织用户的选择),

如果还需要传递一个固定的参数,
http://localhost:8080/sysplat/access/selector.jsp?p=org&id=XXXX&t=y,

1、调用js代码:
var s = window.showModalDialog("/sysplat/access/selector.jsp?p=org",null, "dialogWidth:570px;dialogHeight:546px;help: no;scroll:no; status:no");
s是返回的选择值
2、提示:可以使用双击进行添加和删除

四、系统自带的选择
 1、用户选择
 单用户选择:/sysplat/access/selector.jsp?p=user
 多用户选择:/sysplat/access/selector.jsp?p=muser
  (结果以回车换行符进行分割)

  2、用户组选择
  /sysplat/selector/groupselector.jsp


附:接口实现类
package net.sysplat.access.external;

import java.sql.Connection;
import java.util.ArrayList;

import net.sysplat.admin.eo.Organize;
import net.sysplat.admin.eo.User;
import net.sysplat.admin.manager.OrganizeManager;
import net.sysplat.admin.manager.UserManager;
import net.sysplat.common.I_CommomSelector;
import net.sysplat.common.NodeElement;
import net.sysplat.common.PlatConnectionManager;

/**
 * 组织用户选择器
 * @author
 *
 */
public class OrganizeSelector extends A_CommonSelector
{
 /**
  * 根据parameter返回下级部门
  */
 public ArrayList getSubNodeElement(String parameter)
 {
  ArrayList list = null;
  Connection conn = null;
  OrganizeManager orgMg = OrganizeManager.getInstance();
  if(parameter == null) parameter = "0001O";
  
  try
  {
conn = PlatConnectionManager.getInstance().getConnection();
orgMg.setLanguage(this.language);
orgMg.setConnection(conn);
//该处也可以直接访问数据库
ArrayList list1 = orgMg.getNextLevelOrganize(parameter, null);
if(list1 != null)
{
list = new ArrayList();
for(int i=0; i<list1.size(); i++)
{
 NodeElement node = new NodeElement();
 Organize o = (Organize)list1.get(i);
 node.setId(o.getHierarchy()); //用于提取数据的参数,对应parameter
 node.setParentId(o.getParentId() + "");//父Id
 node.setName(o.getName());
 node.setDisplayOrder(o.getDisplayOrder());
 node.setHierarchy(o.getHierarchy());
 node.setValue(o.getId() + "/" + o.getName());   //设置需要的数据,避免使用,分割
 //可以设置元素是否能被选中
 //node.setCanSelect(false);
 list.add(node);
}
}
  }
  catch(Exception ex)
{
ex.printStackTrace();
}
  finally
  {
PlatConnectionManager.close(conn);
  }
  return list;
 }
 
 /**
  * 根据parameter返回用户,如果没有叶节点,则该方法直接返回null
  */
 public ArrayList getPageElement(String parameter)
 {
  ArrayList list = null;
  Connection conn = null;
  UserManager userMg = UserManager.getInstance();
  //设置语言相关
  userMg.setLanguage(this.language);
  if(parameter == null) parameter = "0001O";  //设置根数据的范围条件
  
  try
  {
conn = PlatConnectionManager.getInstance().getConnection();
userMg.setConnection(conn);
//该处也可以直接访问数据库
ArrayList list1 = userMg.getCurrentLevelUser(parameter, null);;
if(list1 != null)
{
list = new ArrayList();
for(int i=0; i<list1.size(); i++)
{
 NodeElement node = new NodeElement();
 User o = (User)list1.get(i);
 node.setId(o.getHierarchy()); //用于提取数据的参数
 node.setParentId("@");//@表示是叶节点
 node.setName(o.getName());
 //排序码
 node.setDisplayOrder(o.getDisplayOrder());
 node.setHierarchy(o.getHierarchy());
 node.setValue(o.getLoginid() + "/" + o.getName());   //设置需要的数据,避免使用,分割
 //节点关闭的图标
 node.setIcon("../images/user.gif");
 //节点打开的图标
 node.setOpenIcon("../images/user.gif");
 list.add(node);
}
}
  }
  catch(Exception ex)
{
ex.printStackTrace();
}
  finally
  {
PlatConnectionManager.close(conn);
  }
  return list;
 }
 
 /**
  * 是否允许多选
  */
 public boolean isMultiSelect()
 {
  return false;
 }
 
 /**
  * 根节点的名称
  */
 public String getRootName()
 {
  return "部门列表";
 }

 public String getHtmlCss()
 {
  return null;
 }
 
 /**
  * 根据参数返回已经选择的对象,测试的例子
  */
 public ArrayList getSelectedElements(String parameter)
 {
//  NodeElement node = new NodeElement();
//  //只需以下几个值
//  node.setName("XXX");
//  node.setValue("wangyichun/XXX");   //设置需要的数据,避免使用,分割
//  node.setIcon("../images/user.gif");  //显示的图标
//  
//  ArrayList list = new ArrayList();
//  list.add(node);
//  return list;
  return null;
 }
 
 private String language = PlatConnectionManager.getInstance().getLanguage();
 
 public void setLanguage(String language)
 {
  if(language != null && !this.language.equalsIgnoreCase(language))
 {
  this.language = language;
 } 
 }
}

粤ICP备11095012号-1
Copyright 2005-2017 深圳市承元软件技术有限公司