Таблица данных Richfaces — добавление новой строки без повторной обработки всей таблицы данных на стороне клиента.

StackOverflow https://stackoverflow.com/questions/4552491

Вопрос

Новую строку можно добавить в связанную коллекцию на стороне сервера при событии действия командной кнопки или командной ссылки, а вновь добавленную строку можно отобразить на клиенте. если вся таблица перерисовывается.

Можно ли отобразить вновь добавленную строку на стороне клиента? без необходимости обновлять всю таблицу данных, используя частичный рендеринг, с помощью AjaxKeys или что-то ?

Заранее благодарю за любую помощь :)

Это было полезно?

Решение

Вам придется перерисовать всю таблицу данных, если вы добавляете новую строку.AjaxKeys может быть полезен, если вы хотите перерисовать существующие столбцы.

Другие советы

Мне также очень интересно узнать ответ на ваш вопрос, я могу достичь этого с помощью традиционного JavaScript, но когда я использую Rich: DataTable я не могу добавить новые строки на клиент.

Но я сделал это, используя ajax-вызовы серверных функций, эта функция добавляет новую пустую строку в список dataTable и снова отображает rich:datatable.

моя страница xhtml

<rich:column>
<f:facet name="header"><h:outputLabel value="#{msgs.notes}" style="font-size:15px;"/> </f:facet>
<h:inputText    value="#{line.notes}" >
    <a4j:ajax   event="blur" 
    execute="datatable" 
    render="datatable" 
    immediate="true" 
    listener="#{saleBacking.addNewLineInDataTable}"
    oncomplete="document.getElementById('myform:datatable:#{saleBacking.view_no_counter-1}:line').focus();"/>
</h:inputText>
</rich:column>

и в управляемом компоненте

public void addNewLineInDataTable(AjaxBehaviorEvent event)
    {
        SaleLine saleLine = new SaleLine();
        saleLine.setId(salesLineslist.isEmpty() ? 1 : salesLineslist.get(salesLineslist.size() - 1).getId() + 1);
        salesLineslist.add(saleLine);
        saleLine = new SaleLine();
        saleLine = new SaleLine();
        saleLine.setSaleId(sale);
        saleLine.setViewNo(++view_no_counter);
        saleLine.setDiscount(0d);
        saleLine.setItemPrice(0d);
        salesLines.add(saleLine);
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top