2011-07-25 21 views
1

RichFacesの表示/非表示列の機能rich:extendedDataTableは、バージョン4.xでは使用できなくなりました。 それを他の方法で実装する方法はありますか? リッチで列を表示/非表示にする:extendedDataTable(RichFaces 4.x)

私は document.getElementById()機能で、JavaScriptを使用して、エレメントの style.displayプロパティを設定し、それを実行しようとしましたが、 rich:table内のすべての要素を動的に生成されるので、IDによって要素を見つけることは困難です。

何か助けとヒントをいただければ幸いです。

+0

私はそれを行う方法についてはあまりよく分かりません。しかし、この目的のためにJQueryを試してみてください。私はJQueryで自分の手を試しています。クラスまたはdivを定義してから、このクラスまたはdivを非表示にする... jqueryを使用して同じことを達成できるかどうかはわかりませんが、確かに試してみてください... – AngelsandDemons

答えて

1

Richfaces 4.x extendedDataTableでは、cssスタイルを使用して、同じ時間にその列のヘッダーと本文の両方を制御できます。各列のCSSスタイルは、接頭辞「.rf-edt-c-」と列IDで作成されます。 IDが "column1"の列がある場合、CSSスタイルは ".rf-edt-c-column1"になります。以下は、Java Scriptの列idを持つ列を表示/非表示する例です。

<script type="text/javascript"> 
//<![CDATA[ 

    function hideColumn(columnId) 
    { 
     var styleSheets = document.styleSheets; 
     for(var i=0;i<styleSheets.length;i++) 
     { 
      var rules = null; 

      // IE and Chrome 
      if(styleSheets[i].rules != null) 
      { 
       rules = styleSheets[i].rules; 
      } 
      // Firefox 
      else if(styleSheets[i].cssRules != null) 
      { 
       rules = styleSheets[i].cssRules; 
      } 

      for(var j=0;j<rules.length;j++) 
      { 
       // Find the css style of that column 
       if(rules[j].selectorText==".rf-edt-c-" + columnId) 
       { 
        rules[j].style.display = "none"; 
       } 
      } 
     } 
    } 

    function showColumn(columnId) 
    { 
     var styleSheets = document.styleSheets; 
     for(var i=0;i<styleSheets.length;i++) 
     { 
      var rules = null; 

      // IE and Chrome 
      if(styleSheets[i].rules != null) 
      { 
       rules = styleSheets[i].rules; 
      } 
      // Firefox 
      else if(styleSheets[i].cssRules != null) 
      { 
       rules = styleSheets[i].cssRules; 
      } 

      for(var j=0;j<rules.length;j++) 
      { 
       // Find the css style of that column 
       if(rules[j].selectorText==".rf-edt-c-" + columnId) 
       { 
        rules[j].style.display = ""; 
       } 
      } 
     } 
    } 

//]]> 
</script> 
+0

これはとても面白いです、あなたの答えに感謝します。私は約2年前に私の質問をし、既に問題を解決しましたが(実際にはそれを実装する必要はありません)、とにかく時間があるときに試してみます。私はあなたの答えを受け入れたものとしてマークします(あなたの答えが唯一の有望なものでもあるからです)。 – kardanov

-1

ただ、このようthe rich:columnタグ内の属性visible="false"を置く:

<rich:column id="name" label="Name" sortable="true" sortBy="#{edt.name}" visible="false"> 

間違っRichFacesのバージョン、申し訳ありません。

-1

私はrich:column属性でこれを追加します。

width="#{myBean.testDisplay('toDisplay')?'':'0px;border:none;'}" 

それは列の並べ替えとrenderedrenderedため、バグを使用するよりも優れています。

+0

フォーマットコードへの回答を正しく編集して回答を説明し、質問者がこのコードがより効果的な理由を理解できるようにしてください。 – SuperBiasedMan

関連する問題