Редактор строки в одном столбце с другими кнопками

У меня есть дата, в которой я использую roweditor. Все работает нормально, но мне нужно добавить еще несколько кнопок в столбце, в котором у меня есть кнопка карандаша для редактирования. Эта "другая" кнопка всегда ниже карандаша. я пробовал <p:panelgrid columns="3"... но когда я это сделал, редактирование строк было невозможно. Я полагаю, что проблема в двух других кнопках, которые идут с редактированием строки, (ui-icon-check а также ui-icon-close). Кто-нибудь может дать мне идею? Вот мои данные:

        <p:dataTable id="sifarnikTable" rowIndexVar="rowIndex" 
            value="#{attrsBean.listOfDataBeans}" editable="true" 
            selectionMode="multiple" selection="#{attrsBean.selektovani}"
            widgetVar="datatableWidget" var="row" rowKey="#{row.primaryKey}"
            paginator="true" paginatorPosition="bottom" 
            paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
            currentPageReportTemplate="{startRecord} - {endRecord} / {totalRecords}"
            emptyMessage="#{messages['datatable.emptymessage']}" rows="15"
            sortMode="multiple" paginatorAlwaysVisible="false" 
            filteredValue="#{attrsBean.filteredDatatableList}">
            <f:facet name="header">
                #{resources['db_parametri.title']}
            </f:facet>

            <p:ajax event="rowSelect" />
            <p:ajax event="rowUnselect" />

            <p:ajax event="rowEdit" listener="#{attrsBean.onEdit}"
                update=":aswdatatable:form:messages, :aswdatatable:form:sifarnikTable, :aswdatatable:form:noviBtn" />

            <p:ajax event="rowEditCancel" listener="#{attrsBean.onCancel}"
                update=":aswdatatable:form:messages" />

            <p:columns id="columns" var="column" value="#{attrsBean.columns}" 
                style="#{column.css}" width="#{column.width}"
                sortBy="#{row[column.property]}"
                filterStyle="#{attrsBean.columnCSS}"
                filterBy="#{attrsBean.showFilter==false ? null : row[column.property]}">
                <f:facet name="header">
                    <h:outputText value="#{column.header}" />
                </f:facet>
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{row[column.property]}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{row[column.property]}" style="width:96%"></p:inputText>
                    </f:facet>
                </p:cellEditor>

            </p:columns>
            <p:column style="width:6px" exportable="false" >                
                <p:rowEditor />
                <div
                    onclick="datatableWidget.unselectAllRows();datatableWidget.selectRow(#{rowIndex}, false);">
                    <h:panelGroup layout="block">
                        <p:cellEditor>
                            <f:facet name="output">

                                <p:commandLink id="deleteBtn"
                                    onclick="datatableWidget.unselectAllRows();datatableWidget.selectRow(#{rowIndex}, false);brisanjeWidget.show()"
                                    process="@this"
                                    update=":aswdatatable:form:brisanjeDisplay, :aswdatatable:form:sifarnikTable"
                                    styleClass="ui-icon ui-icon-trash">

                                    <f:setPropertyActionListener
                                        target="#{attrsBean.modelForDelete}" value="#{row}" />
                                </p:commandLink>
                            </f:facet>
                            <f:facet name="input">
                                <h:outputText value="" />

                            </f:facet>
                        </p:cellEditor>
                    </h:panelGroup>
                </div>
            </p:column>


        </p:dataTable>

4 ответа

Решение

Установить style="width: 100%" атрибут <p:column/>, При этом размер колонки изменится, чтобы обслужить любые дополнительные компоненты. Диапазон столбца может быть ограничен только размером любого вмещающего контейнера. Например

 <h:panelGrid id="theGrid" style="width:200px">
    <p:dataTable var="car" value="#{tableBean.carsSmall}" id="carList" editable="true">  
        <p:column id="controlColumn" style="width:100%">  
            <p:rowEditor />
            <p:commandButton value="Testing"/>
        </p:column> 
    </p:dataTable>
</h:panelGrid>

В приведенном выше фрагменте controlColumn ограничен шириной theGrid

В Primefaces 5.x:

.ui-row-editor:after {
     clear: none !important;
}

Я решил это, переопределив CSS с помощью:

.ui-row-editor{ display: inline; }

Другое решение:

.ui-row-editor {
    float: left;
}

Другое решение для меня:

.ui-row-editor{
    display: inline-block;
}
Другие вопросы по тегам