из набора результатов Я создаю таблицу данных, которая показывает книги.
Таблица данных
Каждая строка - это одна книга, а каждый столбец - один атрибут книги
Я заполняю таблицу данными из набора результатов, используя для 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\">×</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)