2015-11-12 2 views
0

У меня есть две комбинированные коробки. 1 для основного отдела, а другая для поддерева. Я хочу загрузить все данные из таблицы Main_department в поле со списком. При выборе элемента со списком я хочу загрузить sub_departments, относящийся к этому выбранному элементу.Загрузить данные в поле со списком

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(); 
      } 

Когда главный отдел изменен Суб департаментами, относящимися к этому отделению, загружается в выписку из отдела. Но загруженные элементы все еще остаются при выборе другого.

Как я могу преодолеть эту проблему?

ответ

1

Но нагруженные элементы все еще остается, когда другой один выбран

Вы можете использовать:

dc.removeAllElements(); 

, прежде чем приступить к добавлению новых элементов в модели.

+0

Спасибо. Работает.... – kate

0

Этот случайный колл-зависимый комбинированный блок. Сначала вы должны сначала загружать данные в первый комбинированный блок, а затем, когда пользователь выбирает значение этого комбинированного поля, он будет возвращать Ajax или другую технологию обратно на сервер для извлечения данных во второй combobox. Итак, это идея. Вы можете увидеть эту ссылку для справки here