4

rich:dataGrid で選択範囲を強調表示しようとしています。dataGrid のリンクをクリックすると、modalPanel が開き、ユーザーが画像を選択できるようになり、modalPanel が閉じられると、新しく選択された画像が dataGrid で更新されます。このために、modalPanel から dataGrid を再レンダリングしています。これはうまくいきます。ここで、ユーザーの選択を強調したいと思います。以下のrich:jqueryを使用すると、強調表示されますが、modalPanelポップアップと再レンダリングが発生します。したがって、強調表示された行は元の自分に移動します。

JSF:

<rich:dataGrid value="#{startupBean.choiceKeys}" var="mapEntry" columns="#{startupBean.rowSize}" styleClass="rich-table">


                                 <rich:dataGrid id="choiceSub" styleClass="rich-table" value="#{mapEntry.value}" var="ObjBO" columns="2">
                                       <f:facet name="header">
                                          <h:outputText value="Choice:#{mapEntry.key}"></h:outputText>
                                       </f:facet>
                                 <h:panelGrid columns="2" border="0" styleClass="className">
                                 <rich:panel>
                                     <f:facet name="header">
                                     <a4j:commandLink id="objs"  action="#{startupBean.getCategory}" reRender="materialTree" oncomplete="Richfaces.showModalPanel('selectMaterial',{top:'100px', left:'400px', height:'450px', width:'450px'});" >
                                        <h:outputText value="#{ObjBO.displayName}" binding="#{startupBean.outTxt}"/>
                                            <f:setPropertyActionListener target="#{startupBean.key}" value="#{mapEntry.key}" />
                                        </a4j:commandLink>   
                                     </f:facet>
                                        <h:graphicImage width="50" height="50" id="choice"  alt="jsf-sun" url="#{ObjBO.color_url}" value="#{ObjBO.color_url}"> 
                                        </h:graphicImage>
                                        </rich:panel> 
                                 </h:panelGrid>
                                 </rich:dataGrid>
                                 <rich:jQuery selector="#choiceSub tr" query="click(function(){jQuery(this).addClass('active-row')})"/>
                        </rich:dataGrid>

CSS:

.active-row {
    background-color: red;
}

それを行う他の方法はありますか?教えてください。

PS: 私は JSF2.0、Richfaces 3.2、Apache Tomcat 7、Java 1.7 を使用しています。

ありがとう、ジェーン

4

1 に答える 1

1

要素を再レンダリングすると、サーバーによって生成された新しいコンテンツに置き換えられます。つまり、以前に動的に適用された追加の書式設定または変更 (rich:jQuery の jQuery のように) は失われます。rich:jQuery マニュアルhttp://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/rich_jQuery.htmlの問題の説明も参照してください。

基本的に、ajax が戻った後、行の強調表示を再度適用する必要があります。これについて追加の指示が必要な場合はコメントしてください。

于 2012-09-20T21:29:13.317 に答える