从datagrid

时间:2016-04-14 18:58:44

标签: primefaces datagrid blockui

我有以下数据网格,它显示学生姓名列表作为链接。

    <h:form id="gsform">

                <p:dataGrid var="stuvar" rendered="#{gradeSheetController.listStudent != null}" 
                            value="#{gradeSheetController.listStudent}" columns="5" layout="grid">
                                <p:commandLink actionListener="#{gradeSheetController.readStudentGradeSheet}" 
                                                        update=":gsform:gscont, :gsform:buttoncont">
                                    <h:outputText id="stname" style="font-size:16px" value="#{stuvar.studentFirstName}" />
                                    <f:param name="selstudent" value="#{stuvar.studentSeq}" />
                                </p:commandLink>
                </p:dataGrid>

我还有以下的blockUI来冻结屏幕,直到后端处理完成,目前用于保存按钮。

        <p:blockUI block=":entirePageBody" trigger="savebutton">
            <h:panelGrid id="blockContent" columns="2">
                <h:graphicImage library="images" name="loading.gif" style="margin-right:12px; vertical-align:middle;" />
                <h:outputText value="Please wait, data is being processed..." style="white-space:nowrap;" />
            </h:panelGrid>
        </p:blockUI>

现在,我还希望在单击学生姓名链接时触发blockUI。显然,由于学生的数量是动态的并且在数据网格内,因此生成的代码包括id的其他方面,如id =“gsform:j_idt168:1:stname”,id =“gsform:j_idt168:2:stname”和等等。

不知道如何在点击数据网格中的学生姓名链接时触发blockUI,请建议。

2 个答案:

答案 0 :(得分:2)

使用onclick / oncomplete

从dataGrid中触发/隐藏blockUI
    <p:dataGrid var="stuvar" rendered="#{gsExamController.listStudent != null}" 
            value="#{gsExamController.listStudent}" columns="5" layout="grid">
            <p:commandLink actionListener="#{gsExamController.readStudentGradeSheet}" 
                        onclick="PF('bui').show()"
                        oncomplete="PF('bui').hide()"
                        update=":gsform:gscont, :gsform:remarkcont, :gsform:buttoncont">
                    <h:outputText style="font-size:16px" value="#{stuvar.studentFirstName}" />
                    <f:param name="selstudent" value="#{stuvar.studentSeq}" />
                </p:commandLink>
    </p:dataGrid>




<p:blockUI block=":entirePageBody" trigger="savebutton" widgetVar="bui">
    <h:panelGrid id="blockContent" columns="2">
        <h:graphicImage library="images" name="loading.gif" style="margin-right:12px; vertical-align:middle;" />
        <h:outputText value="Please wait, data is being processed..." style="white-space:nowrap;" />
    </h:panelGrid>
</p:blockUI>

答案 1 :(得分:0)

一个简单的解决方案是使用Primefaces' selectors

例如:

<p:commandLink value="Click me." styleClass="blockMeWhenClicked" />

<p:blockUI block=":ElementToBeBlocked" trigger="@(.blockMeWhenClicked)" />