Richfaces datatable - добавление новой строки без перерисовки всей таблицы данных на стороне клиента - PullRequest
2 голосов
/ 29 декабря 2010

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

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

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

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

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

0 голосов
/ 10 января 2012

Мне очень интересно также узнать ответ на ваш вопрос, Я могу добиться этого, используя традиционный 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);
    }
...