我有两个组合框.1是主要部门,另一个是子部门。我想将Main_department表中的所有数据加载到组合框中。当选择组合框项目时,我想加载与该选定项目相关的子部门。
try {
Conn c=new Conn();
Statement s=c.createConn().createStatement();
String query ="SELECT * FROM main_dep";
ResultSet rst = s.executeQuery(query);
DefaultComboBoxModel dc=(DefaultComboBoxModel)maindep.getModel();
while(rst.next()){
dc.addElement(rst.getString(2));
}
} catch (Exception e) {
e.printStackTrace();
}
这就是我得到主要部门的方式。然后我在主要部门组合框中为itemStateChange事件编写了以下代码。
String main = maindep.getSelectedItem().toString();
Conn c=new Conn();
try {
//Conn c=new Conn();
Statement s=c.createConn().createStatement();
String query ="SELECT Description FROM sub_dep WHERE Main_dep_ID IN (SELECT Main_Dep_Id FROM main_dep WHERE description = '"+main+"')";
ResultSet rst = s.executeQuery(query);
DefaultComboBoxModel dc=(DefaultComboBoxModel)subdep.getModel();
while(rst.next()){
dc.addElement(rst.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
}
当主要部门被更改时,与该部门相关的子部门被加载到子部门组合框。但是当选择另一个时,加载的项目仍然存在。
我如何克服这个问题?
答案 0 :(得分:1)
但是当选择了另一个时,加载的项目仍然存在
您可以使用:
dc.removeAllElements();
在开始向模型添加新元素之前。
答案 1 :(得分:0)
此案例调用依赖的组合框。 你必须先将数据加载到第一个组合框,然后当用户选择该组合框的值时,它会将Ajax或其他技术返回到服务器以将数据检索到第二个组合框。所以,这就是想法。 您可以看到此链接以供参考here