如何使手风琴正确显示动态信息

时间:2014-04-07 10:01:49

标签: java jquery jsp

我有一个数据库,可以在部分中存储一些条目。每个部分都有多个小节,我想创建一个手风琴下拉列表来显示列表中的所有部分,当单击一个部分时,它会显示其子部分。 例如: 第1,2,3节各有2个小节(1.1,1.2,1.3等)。我希望它们显示为1,2,3,当我打开第1节时,手风琴会显示第1.1,1.2小节和1.3。目前,手风琴在每个条目中显示第1部分,其具有其自己的子部分1-> 1.1然后1-> 1.2和1-1.3。这也适用于最后两个部分。

我目前仍然坚持这一点,不会显示我想要的部分:

String sql = "select * from sections inner join subsections on sections.id_section=subsections.id_section ";
ResultSet rs = s.executeQuery(sql);
while (rs.next())
{
    out.println("<div id='accordion-container'>" + "<h2 class='accordion-header'>" + rs.getString("section_name") + "</h2>");
}
while (rs.next()) {
    out.println("<div class='accordion-content'>" + rs.getString("subsection_name") + "</div>" + "</div>");
}
rs.close();
s.close();
con.close();

1 个答案:

答案 0 :(得分:0)

您的代码中存在逻辑错误。在第一次结束之后,没有任何东西可以用来驱动第二次。我建议使用2个不同的变量(sprev scurr)来跟踪当前部分是否与前一部分不同,并且仅在发生时才关闭当前部分并启动另一部分。首先用0之类的东西初始化2个变量,然后,在第一个变量中,使当前部分scurr = rs.getInt('id_section')。之后检查前一部分是否与当前部分不同。如果为true,请检查前一部分是否为0,如果为true则关闭部分div。在此之后(在第一个if内)开始一个新的部分div并打印出它的'名称。在if语句之外打印用于显示子部分的代码。就在结束当前循环之前,使sprev var等于scurr。

我为你准备了一个例子:

ResultSet srs = st.executeQuery("SELECT * FROM subsections inner join sections on         subsections.id_section=sections.id_section");

//variables for current and previous section ids (initially 0 = non-existent)
int idCurrentSection = 0;
int idPreviousSection = 0;

while (srs.next()) {
    idCurrentSection = srs.getInt("id_section"); //get and save the current section id
//if previous section is equal to current section we skip closing and opening a new     section block and just write the subsection name
    if(idCurrentSection!=idPreviousSection){ //if current section is different from previous section we need to start a new section block
        if(idPreviousSection != 0) //if previous section id is different from 0 we need to close the previous section block
            System.out.println("</div>");
        System.out.println("<div class='section'>"); //open a new section block
    }


    System.out.println("<p>"+srs.getInt("section_name")+"</p>");    //write the new section name

    System.out.println("<div class='subsection'>"); //start a new subsection
    System.out.println("<p>"+srs.getInt("subsection_name")+"</p>"); //write the subsection name
    System.out.println("</div>"); //inchid subsectiunea

    idPreviousSection = idCurrentSection; //previous section is now the current section

   }

System.out.println("</div>"); //careful to close the last section block