在 p:schedule header 中添加命令按钮

Adding command button in p:schedule header

如何在 p:schedule 中添加 "custom" 按钮?我尝试在 p:dataTable 组件中的 header 方面的帮助下完成它,但无济于事。


抱歉一开始不清楚,有人通过编辑标题来解决我的问题也可能没有帮助,这里有更多详细信息和代码片段。

我想做类似这样的事情:

                    <p:tab title="#{bean.name}" value="bean" >
                        <f:facet name="title">
                            <h:outputText value="#{bean.name}"/>
                            <p:selectBooleanButton styleClass="...">
                                <p:ajax converter="... />
                            </p:selectBooleanButton>
                        </f:facet>
                    </p:tab>

代码正在创建一个选项卡(用于手风琴面板),其中包含一个文本+按钮,而不是仅包含默认文本。

我正在 p:schedule 组件中寻找相同的行为。

<p:schedule value="#{scheduleView.lazyEventModel}" leftHeaderTemplate="today" centerHeaderTemplate="prev, title, next" rightHeaderTemplate="month, agendaWeek" >
        <f:facet name="header">
                <h:outputText value="#{bean.name}"/>
                <p:commandButton styleClass="..."/>
        </f:facet>
</p:schedule>

同样按header原理加个按钮,只是这次按计划进行。当然,由于 schedule 没有任何可用于覆盖的方面,因此这种方法不起作用。 最后,我的问题是:如何在 p:schedule header 中添加按钮,如上图?

P.S:请原谅我让你们混淆了 datatable,因为它支持多方面(header,页脚)而使用它。

客户端,所有 html 都可以用 javascript 操作(jquery,如果你愿意的话)。

因此,如果您像这样创建日程和按钮:

<h:panelGroup id="mySchedule">
    <p:schedule value="#{scheduleView.lazyEventModel}" leftHeaderTemplate="today" centerHeaderTemplate="prev, title, next" rightHeaderTemplate="month, agendaWeek"/>

    <h:outputText value="#{bean.name}" id="scheduleOutputText"/>
    <p:commandButton styleClass="..." id="scheduleCommandButton"/>

</h:panelGroup>

您可以将 h:outputTextp:commandButton 移动到 jquery dom manipulation 的时间表中。

$("#scheduleCommandButton").insertBefore(".fc-left");
$("#scheduleOutputText").insertBefore("#scheduleCommandButton");

如果您将此脚本放入 panelGroup 并在每次通过 ajax 通常更新计划时更新 panelGroup,则应在更新中再次移动添加按钮和文本。

<h:panelGroup id="mySchedule">
    <p:schedule value="#{scheduleView.lazyEventModel}" leftHeaderTemplate="today" centerHeaderTemplate="prev, title, next" rightHeaderTemplate="month, agendaWeek"/>

    <h:outputText value="#{bean.name}" id="scheduleOutputText"/>
    <p:commandButton styleClass="..." id="scheduleCommandButton"/>

    $("#scheduleCommandButton").insertBefore(".fc-left");
    $("#scheduleOutputText").insertBefore("#scheduleCommandButton");

</h:panelGroup>

您还可以将文本和按钮放在一个面板组中,然后通过 dom 操作来移动它。只要确保您使用了正确的选择器(我没有在上面的选择器前添加表单 ID)。您还可以使用 class 选择器而不是 id。那取决于你。

但请务必小心使用。正如@JasperDeVries 在评论中提到的那样,破坏事物很容易。只在万不得已的时候谨慎使用它