Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF h:dataTable несколько вопросов / 5 сообщений из 5, страница 1 из 1
06.02.2013, 15:23:58
    #38140164
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF h:dataTable несколько вопросов
Есть данные засунутые в DataModel modelTable.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 
   // возвращаем модель нашей таблицы для вывода на экран
    public DataModel getModelTable() throws SQLException, ClassNotFoundException, FileNotFoundException, IOException {

        if (modelTable == null) {

            String sql = "SELECT a.kod_fio, a.ntab, a.fio, a.liststruct FROM spr_fio a ORDER BY fio";

            // посылаем наш sql запрос и получаем кэшированный результат
            resaltTable = Connect_DBF.getCachedResult(sql);

            // создаем DataModel
            modelTable = new ResultSetDataModel(resaltTable);

        }

        return modelTable;

    }



Вывожу на экран с помощью тега h:dataTable, с добавлением ссылок для удаления и редактировани.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<h:dataTable value="#{tableData.modelTable}" var="table">

//...
                    <h:column>
                        <h:commandButton value="edit" action="#{tableData.edit}" />
                    </h:column>

                    <h:column>
                        <!-- удаление строки вызываем метод delRow и посылаем kod_fio удаляемого сотрудника-->
                        <h:commandLink action="#{tableData.delRow(table.kod_fio)}"> 
                            <h:graphicImage value="/resources/images/delete.gif"/>
                        </h:commandLink>
                    </h:column>


</h:dataTable>



Методы обработки редактирования и удаления

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    // Редактирование выбранной строки
    public Object edit() {
        // получаем текушую строку в которой нажали кнопку
        Object editRow = modelTable.getRowData();
        System.out.println("editRow: " + editRow.toString());
        // ... пока в разработке
        //resaltTable.cancelRowUpdates();
        //return editRow;
    }

    // Удаление строки
    synchronized public String delRow(String kodfio) throws SQLException {

        // удаления и вернуть null чтобы страница обновилась
        System.out.println("Код Ф.И.О удаляемого сотрудника: " + kodfio);
        resaltTable.deleteRow();

        return null;

    }



Вопросы:
1. При нажатии на ссылку удаления, удаление происходит как я понял, но не отображается, хотя я посылаю null и страница должна обновиться. Но обновляется все только после того как нажмешь ссылку удаления на другой записи.
2. Не нашел как жестко задать ширину столбцов таблицы, а то она постоянно при обновлении скачет.
...
Рейтинг: 0 / 0
06.02.2013, 18:52:09
    #38140650
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF h:dataTable несколько вопросов
Alex-ZZZ,
Конечно много вопросов по коду, но нет времени критиковать, почти уверен что вот это сработает -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
synchronized public String delRow(String kodfio) throws SQLException {

        // удаления и вернуть null чтобы страница обновилась
        System.out.println("Код Ф.И.О удаляемого сотрудника: " + kodfio);
        resaltTable.deleteRow();
        modelTable = null;
        return null;

    }


Обьяснить почему?
...
Рейтинг: 0 / 0
07.02.2013, 09:28:31
    #38141107
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF h:dataTable несколько вопросов
забыл никAlex-ZZZ,
Конечно много вопросов по коду, но нет времени критиковать, почти уверен что вот это сработает -

Обьяснить почему?

Если modelTable = null; то sql запрос заново отработает, а я хотел избежать повторного выполнения при каждом обновлении страницы. И пока я sql запросом не удалю запись из исходной dbf, modelTable будет ведь с удаленными записями создаваться.

Интересно было бы выслушать критику по коду, так как только прочитал книгу по JSF 2.0 и пытаюсь сделать первое приложение с подключением к dbf и различными манипуляциями с данными.
...
Рейтинг: 0 / 0
07.02.2013, 10:21:33
    #38141170
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF h:dataTable несколько вопросов
Alex-ZZZ,

ну хорошо, а что вам мешает вот так делать -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
synchronized public String delRow(String kodfio) throws SQLException {

        // удаления и вернуть null чтобы страница обновилась
        System.out.println("Код Ф.И.О удаляемого сотрудника: " + kodfio);
        resaltTable.deleteRow();
        modelTable = new ResultSetDataModel(resaltTable);
        return null;

    }
...
Рейтинг: 0 / 0
07.02.2013, 14:01:41
    #38141704
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF h:dataTable несколько вопросов
забыл никAlex-ZZZ,

ну хорошо, а что вам мешает вот так делать -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
synchronized public String delRow(String kodfio) throws SQLException {

        // удаления и вернуть null чтобы страница обновилась
        System.out.println("Код Ф.И.О удаляемого сотрудника: " + kodfio);
        resaltTable.deleteRow();
        modelTable = new ResultSetDataModel(resaltTable);
        return null;

    }



Спасибо за помощь но оказалось, что в моем первом варианте все в принципе работает, просто из-за большого количества строк я нажимал кнопку удаления до того как они отрисовались (ограничил количество выводимых строк до 20 и все нормально стало).

Остался единственный глюк - удалить первую строчку с первого раза нельзя, приходится нажимать два раза, остальные строчки удаляются в нормальном режиме.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF h:dataTable несколько вопросов / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]