Таблица с кнопкой для «подробного просмотра» - Как динамически создать подробный вид для каждой строки? - PullRequest
0 голосов
/ 12 марта 2020

из набора результатов Я создаю таблицу данных, которая показывает книги.

Таблица данных

Каждая строка - это одна книга, а каждый столбец - один атрибут книги

Я заполняю таблицу данными из набора результатов, используя для l oop.

do {
    table += "<tr>";    
    for (int i = 1; i <= col; i++) {                    
        if(i==1) {
            table += generateDetailansichtModal(rs, i);  
        } else if (i==11) {
            table += generateBewertungModal(rs, i);
        } else {
            table += "<td>"  + rs.getString(i) + "</td>";   
        }
    }
    table += "</tr>";                                   
} while (rs.next());

Как видите, «нормальные» ячейки просто заполняются данными базы данных, тогда как другие ячейки заполнены динамическим содержимым c. Например, первая ячейка должна быть заполнена кнопкой, которая ведет к подробному виду. В обычных ячейках rs.getString (i) всегда знает, в какой строке находится указатель из-за rs.next (), и может соответствующим образом вставить содержимое.

Моя проблема заключается в том, что содержимое generateGetailansichtModal не динамически. Здесь я хочу открыть модал, который снова отображает все атрибуты книг. Поскольку он вызывается внутри do while, я подумал, что он также знает текущую строку и правильно выбирает содержимое. generateDetailansichtModal создает модальный режим, в котором я хочу отобразить все строки (= книги) еще раз. Это потому, что содержимое таблицы может быть обрезано или что-то в этом роде. Код generateDetailansichtModal:

    private static String generateDetailansichtModal(ResultSet rs, int i) throws SQLException{


    String detailmodal =  "<td><button type=\"button\" class=\"btn btn-sm\" data-toggle=\"modal\" data-target=\"#detailansicht\">"+rs.getString(i)+"</button>" //button
            + "<div class=\"modal fade right\" id=\"detailansicht\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"myModalLabel\"\r\n" +
            "  aria-hidden=\"true\">\r\n" + 
            "  <div class=\"modal-dialog modal-notify modal-info modal-lg modal-full-height modal-right\" role=\"document\">\r\n" + 
            "    <div class=\"modal-content\">\r\n" + 
            "      <div class=\"modal-header\">\r\n" + 
            "        <h4 class=\"heading lead\" id=\"myModalLabel\">Detailansicht</h4>\r\n" + 
            "        <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\r\n" + 
            "          <span aria-hidden=\"true\" class=\"white-text\">&times;</span>\r\n" + 
            "        </button>\r\n" + 
            "      </div>\r\n" + 
            "      <div class=\"modal-body\">\r\n"  +  
            "ID: " + rs.getString(1) + 
            "      </div>\r\n" + 
            "      <div class=\"modal-footer justify-content-center\">\r\n" +
            "      <button type=\"button\" class=\"btn btn-info my-4 btn-block\" type=\"submit\" data-dismiss=\"modal\">Close Detail view</button>" +                                                       
            "      </div>\r\n" + 
            "    </div>\r\n" + 
            "  </div>\r\n" + 
            "</div>" +
            "</td>";   // Schließe td;
    return detailmodal;
    }

В качестве метки кнопки я использую rs.getString (i), которая в данном случае rs.getString (1) и дает мне идентификатор книги (потому что 1 столбец идентификатора) в соответствующей строке. Вот это работает! Когда я использую rs.getString (1) в модальном теле, он всегда отображает идентификатор из первой строки. Я не знаю, почему он не использует правильную строку, как в do, когда l oop проходит через каждую строку.

Например: когда я нажимаю модальную кнопку в строке с идентификатором 12, модальное тело говорит ID: 12. Но когда я открываю модальный ряд с ID 14, модальное тело также говорит ID: 12. Моя проблема заключается в переходе к правильной строке при получении данных.

Любая помощь будет принята с благодарностью! :)

Основная проблема: почему rs.getString (i) в имени кнопки отличается от rs.getString (i) в модальном теле? В имени кнопки это динамически адрес правильной строки, в модальном теле нет (всегда используется строка 1)

...