Захват отдельных ячеек p: dataTable

Есть ли способ зафиксировать значение отдельных ячеек в таблице данных JSF на основе щелчка пользователя?

Итак, у меня есть таблица, показанная на изображении ниже, и я хочу создать строку, объединив разные ячейки из каждого столбца, который выбирает пользователь. В каждом столбце пользователь может щелкнуть одну или несколько ячеек, и значение в ячейках будет обновлено (добавлен) в текстовой области.

Захват отдельных ячеек p: dataTable

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

Захват отдельных ячеек p: dataTable

Самый лучший и самый эффективный способ добиться этого - это JSF. Не обязательно быть датируемым, но я надеюсь, вы знаете, чего я хочу здесь достичь.

Может, primefaces.org/showcase-ext/views/sheet.jsf лучшее решение?

Kukeltje 12.09.2018 12:07

Согласитесь с @Kukeltje, именно для этого и предназначен PrimeFaces Extensions Sheet. Возможность получать уведомления об изменении или выборе одной ячейки.

Melloware 12.09.2018 13:13

@Melloware: возможно ли, когда у вас выбрано несколько ячеек, и вы делаете ctrl + c, а в отдельном текстовом редакторе делаете ctrl-v, вы получаете текстовое содержимое всех выбранных ячеек. В настоящее время вы получаете только содержимое последней выбранной ячейки.

Kukeltje 12.09.2018 13:23

Хм, перейдите к витрине здесь: primefaces.org/showcase-ext/sections/sheet/basicUsage.jsf В первом столбце «ID» выберите диапазон и нажмите CTRL + C. Когда я вставляю в Блокнот, он копирует все значения ячеек?

Melloware 12.09.2018 20:03

Я получаю эту ошибку, когда использую расширенный лист Primefaces. Я использую Primefaces 4.0. "<pe: sheet> Библиотека тегов поддерживает пространство имен: primefaces.org/ui/extensions, но тег не был определен для name: sheet"

Naxi 15.09.2018 16:28
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
63
1

Ответы 1

Я попытался заставить его работать с datatable, так как он может получать значение на уровне ячейки. Я использую editmode = "cell", чтобы получить доступ к уровню ячейки. inputText отключен, потому что вы не хотите, чтобы пользователь редактировал его. xhtml:

<datatable value"#{yourBean.listValue" var = "list" editMode = "cell" editable = "true"
----and other stuffs----->
    <p:ajax event = "cellEdit" listener = "#{yourBean.selectedCell}"/>
    <p:column headerText = "A">
        <p:cellEditor>
            <f:facet name = "output">
                <p:outputLabel value = "#{list.valueA}"/>
            </f:facet>
            <f:facet name = "input">
                <p:inputText value = "#{list.valueA}" disabled = "true"/>
            </f:facet>
        </p:cellEditor>
    </p:column>
    <p:column headerText = "B">
        <p:cellEditor>
            <f:facet name = "output">
                <p:outputLabel value = "#{list.valueB}"/>
            </f:facet>
            <f:facet name = "input">
                <p:inputText value = "#{list.valueB}" disabled = "true"/>
            </f:facet>
        </p:cellEditor>
    </p:column>
----and so on---
</p:datatable>

YourBean:

String result, A, B;

public void selectedCell(CellEditEvent event) {
    switch(event.getColumn().getHeaderText()) {
        case "A": A= event.getOldValue().toString();
          break;
        case "B": B = event.getOldValue().toString();
          break;
    }
    result = A + B;
}

Я использую switch-case, если вы хотите, чтобы результат был в порядке. для получения дополнительной информации о редактировании ячейки в datatable проверьте эта ссылка

Спасибо за ответ. Я попытался воспроизвести то же самое, и таблица данных подходит для меня. Но при нажатии на любую ячейку запрос не запускается. Мой слушатель onCellEdit никогда не вызывается.

Naxi 15.09.2018 14:22

Кроме того, я думаю, что для работы события cellEdit мне нужно отредактировать ячейку. Это не сработает, если я просто дважды щелкну ячейку. Пожалуйста, поправьте меня, если я ошибаюсь. Есть ли способ решения этой проблемы? @blablabla

Naxi 16.09.2018 13:40

когда я попробовал приведенный выше код, он вызвал метод selectedCell после того, как редактирование ячейки потеряло фокус. но мой код не позволяет редактировать ячейку, так как я отключил inputtext. поэтому он работает, когда вы выбираете ячейку, а затем отпускаете фокус, нажимая escape, или щелкаете где-нибудь за пределами данных

Blablabla 16.09.2018 14:28

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