入下拉框的可选项是一个树形结构列表,在list里面的各个数据已经有了父子关系,
如何让下拉列表的可选项实现相应的层次关系,结构如下: 北京市
--朝阳区
--国贸
--海淀区
--中关村
河北省
--石家庄市
让这些层次结构出现在下拉框的可选项目中.
其中,北京市,朝阳区等都已经在一个list里面,而且他们已经有了明确的父子关系.
用jsp+struts技术实现,如下:
<td>
<html:select property="saleWay" size="1" style="WIDTH:125px">
<option selected value=null></Option>
.
.
.
</html:select>
</td>省略号的地方如何写jsp代码啊?请大虾指点.
如何让下拉列表的可选项实现相应的层次关系,结构如下: 北京市
--朝阳区
--国贸
--海淀区
--中关村
河北省
--石家庄市
让这些层次结构出现在下拉框的可选项目中.
其中,北京市,朝阳区等都已经在一个list里面,而且他们已经有了明确的父子关系.
用jsp+struts技术实现,如下:
<td>
<html:select property="saleWay" size="1" style="WIDTH:125px">
<option selected value=null></Option>
.
.
.
</html:select>
</td>省略号的地方如何写jsp代码啊?请大虾指点.
/**
* 根据List对象生成<select>控件
* @param l list
* @param formFieldName form中的名称
* @param defaultValue 默认值
* @return
*/
public static String genSelect(List lis, String formFieldName,
Object defaultValue) {
StringBuffer buf = new StringBuffer();
buf.append("<select name=\"" + formFieldName + "\">");
//if (formFieldName.equals("doc_class")) {
// buf.append("<option><根></option>");
//}
for (int i = 0; i < lis.size(); i++) {
boolean selected = false;
HashMap row = (HashMap) lis.get(i);
Object key = row.keySet().iterator().next();
Object value = row.get(key);
if (key.toString().equals(defaultValue)) {
selected = true;
}
buf.append("<option value=\"" + key + "\"");
if (selected) {
buf.append(" selected");
}
buf.append(">" + value + "</option>");
}
buf.append("</select>");
return buf.toString();
}
没有实现那种按照父子关系得到的分层啊.仅是下面的效果吧:
北京市
朝阳区
国贸
海淀区
中关村
河北省
石家庄市
楼主要的是在下拉中显示的如下分层:北京市
--朝阳区
--国贸
--海淀区
--中关村
河北省
--石家庄市
继续关注!
public List genSelection() {
ArrayList returnList = new ArrayList();
try {
Session sess = HibernateUtilServlet.currentSession();
Transaction tx = sess.beginTransaction();
Query q = sess.createQuery
("from com.document.Doc_class docc where docc.dc_parent_id is null order by docc.dc_db_id");
List list = q.list() ;
for (int i = 0; i < list.size(); i++) {
Doc_class dc = (Doc_class) list.get(i);
HashMap row = new HashMap();
row.put(dc.getDc_db_id(), dc.getDc_class_name());
returnList.add(row);
genSelection(dc.getDc_db_id().intValue(),1,returnList);
}
return returnList;
} catch (HibernateException he) {
System.out.println(he);
return null;
}
}
public List genSelection(int id, int layer, ArrayList returnList) {
try {
Session sess = HibernateUtilServlet.currentSession();
Transaction tx = sess.beginTransaction();
Query q = sess.createQuery
("from com.document.Doc_class docc where docc.dc_parent_id = ? order by docc.dc_db_id");
q.setInteger(0, id);
List list = q.list();
for (int i = 0; i < list.size(); i++) {
Doc_class dc = (Doc_class) list.get(i);
String className = "└" + dc.getDc_class_name();
for (int j = 0; j < layer; j++) {
className = " " + className;
}
HashMap row = new HashMap();
row.put(dc.getDc_db_id(), className);
returnList.add(row);
genSelection(dc.getDc_db_id().intValue(), layer + 1, returnList);
}
return returnList;
}
catch (HibernateException he) {
System.out.println(he);
return null;
}
}