سؤال

لقد كنت أحاول تحقيق هذه الوظيفة من توسيع/انهيار صفوف الجدول باستخدام Core JSF وأيضًا يجب أن أحافظ على الفرز. هل هناك طريقة في Core JSF حيث يمكنني تحقيق هذه الوظيفة؟

هل كانت مفيدة؟

المحلول

إذا أصرت على استخدام التنفيذ المرجعي فقط ، فلا يمكنك الالتفاف باستخدام متداخل h:dataTable و/أو h:panelGroup و جيد لقطة من CSS للحصول عليها بشكل جيد. يمكنك بعد ذلك استخدام JavaScript الطريقة الذكية لإظهار/إخفاء تفاصيل الصف.

إليك مثال انطلاق أساسي:

<h:dataTable value="#{bean.orders}" var="order">
    <h:column>
        <h:panelGrid columns="3">
            <h:graphicImage id="expand" value="expand.gif" onclick="toggleDetails(this);" />
            <h:outputText value="#{order.id}" />
            <h:outputText value="#{order.name}" />
        </h:panelGrid>
        <h:dataTable id="details" value="#{order.details}" var="detail" style="display: none;">
            <h:column><h:outputText value="#{detail.date}" /></h:column>
            <h:column><h:outputText value="#{detail.description}" /></h:column>
            <h:column><h:outputText value="#{detail.quantity}" /></h:column>
        </h:dataTable>
    </h:column>
</h:dataTable>

ال toggleDetails() يمكن أن تبدو الوظيفة (لاحظ أنه يتطلب معرف العميل الذي تم إنشاؤه JSF في الاعتبار):

function toggleDetails(image) {
    var detailsId = image.id.substring(0, image.id.lastIndexOf(':')) + ':details';
    var details = document.getElementById(detailsId);
    if (details.style.display == 'none') {
        details.style.display = 'block';
        image.src = 'collapse.gif';
    } else {
        details.style.display = 'none';
        image.src = 'expand.gif';
    }
}

نصائح أخرى

لا أعتقد أنه يمكنك القيام بذلك باستخدام JSF "Core" (والتي أفترض من خلالها استخدام تطبيق المرجع فقط).

كما أفهمها ، يمكنك إنجاز الأشياء الفرعية مع Richfaces خاضع

يمكنك أيضًا القيام بشيء مماثل مع IceFaces - انظر عرض مكون (إنه تحت الجدول -> جدول قابل للتوسيع). ومع ذلك ، فإن أيًا من هذه الأشياء سيتطلب منك إضافة وإنشاء مكتبة أخرى (Richfaces أو Icefaces) والتي ربما لا تكون ما تريد.

طاولة بسيطة قابلة للتوسيع مع ريتشفس

يمكننا أن نفعل طاولة بسيطة قابلة للتوسيع مع Richfaces ويترد الرمز أدناه ...

<h:form>
   <rich:dataTable value="#{wonderBean.wonders}" var="wonder">
      <rich:column colspan="3">
         <f:facet name="header">Wonder</f:facet>
     <h:outputText value="#{wonder.name}" />
     <a4j:commandLink id="link" value="#{!wonderBean.show?'[+]':'[-]'}"
        reRender="link">
     <a4j:actionparam name="val" value="#{!wonderBean.show}"
        assignTo="#{wonderBean.show}" />
     </a4j:commandLink>
      </rich:column>
      <rich:columnGroup>
         <rich:column>
        <a4j:outputPanel ajaxRendered="true">
             <rich:dataTable value="#{wonder.details}" var="detail"
            rendered="#{wonderBean.show}" style="border: 0px">
                <rich:column>
            <f:facet name="header">Location</f:facet>
            <h:outputText value="#{detail.location}" />
            </rich:column>
            <rich:column>
               <f:facet name="header">Image</f:facet>
               <h:graphicImage value="#{detail.imageUrl}" />
            </rich:column>
         </rich:dataTable>
          </a4j:outputPanel>
       </rich:column>
        </rich:columnGroup>
     </rich:dataTable>
</h:form>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top