データを表示するためのJSFページで、ソートと列の並べ替えを有効にしたデータテーブルが、適切なバッキングBeanプロパティ(sortColumnId、sortAscending、columnsOrder o:dataTable要素の属性)。対応するインライン編集ページ(カスタムコードを通して、テーブルの個々の行をユーザが一度に1つずつ保存することができます)では、データテーブルのcolumnsOrderは同じプロパティにリンクされているため、列はo:columnReordering要素は、編集ページの列の並び替えを防ぐためにデータテーブルに存在しません。パーシャルレスポンスXMLのエラーのために、列の移動によって開始されたAJAX呼び出しがテーブルを更新できないため、これが必要です。 (編集ページのAJAXを介してテーブルが更新されないようにするための他の要件もあります)ソートされたOpenFaces Datatableのソート順を変更する機能を無効にする
ビューと同じ順序でソートされた編集ページ上のデータテーブルを持たせたい並べ替えも無効になっています。しかし、これはOpenFacesでは可能ではないようです。編集ページのデータを同じバッキングBeanのプロパティにリンクしましたが、ソートされた列をソート済みとして表示するには、o:columnタグにsortingExpression属性が必要です。その属性が列に追加されると、その列は、ユーザーが列ヘッダーをクリックすることでソート可能になります。追加されない場合、列はユーザーによってソート可能ではありませんが、バッキングBeanのプロパティで並べ替える列として指定されていても、その列で並べ替えられません。
DOMが作成されたらJQueryで実行されるJavaScriptを使用して、OpenFaces列ヘッダーの 'th'要素でclickイベントによって呼び出された関数を上書きしようとしましたが、関数を呼び出した後、AJAX呼び出しテーブルをリフレッシュしてもまだ呼び出されています。使用されるコードは次のとおりです。Edit.xhtmlで
:
<script type="text/javascript">
$(document).ready(function() {
$('#doorNumberColumnHeader').parents('th').onclick = null;
$('#doorNumberColumnHeader').parents('th').click(function(event) {
alert("Preventing AJAX call");
if (event) {
event.preventDefault ? event.preventDefault() : event.returnValue = false;
}
return false;
});
});
</script>
Edit.xthmlのOpenFacesのデータテーブル内:
<o:column id="doorNumberColumn" sortingExpression="#{submission.doorNum}" fixed="true" width="50px">
<f:facet name="header">
<h:outputText value="#{bundle.SubmissionDoorNumber}" id="doorNumberColumnHeader"/>
</f:facet>
<h:outputText value="#{submission.doorNum}"/>
</o:column>
停止するAJAX呼び出しを防ぐためにしようとのより良い方法はありますユーザーはテーブルのソート順を変更できますか?
ありがとうございました。
修正のおめでとう!あなたができるときは、他の人があなたの成功から学ぶことができるように、あなたの答えに「受け入れられた」と記入してください。乾杯〜 –