2016-05-25 13 views
0

データベースが何も返されないときにカラム全体を隠そうとしていますが、データベースフィールド(例:{something})を有効な入力として扱います。空のデータベーステーブルカラムを非表示にする

enter image description here

私はStephen Walcherのコード remove/hide table's empty column(s), including <th> に基づいてこのコードを試してみたが、それでも:

https://jsfiddle.net/wwmyxp9o/9/

この

$('#mytable th').each(function(i) { 
    var remove = 0; 

var tds = $(this).parents('table').find('tr td:nth-child(' + (i + 1) + ')') 
tds.each(function(j) { 
    if (this.innerHTML == '') remove++; 
}); 
if (remove == ($('#mytable tr').length - 1)) { 
    $(this).hide(); 
    tds.hide(); 
} 
}); 
はそれの前が今見えるものです運がない。

私はこのスケールで何かを始めたばかりです。私はこの問題の助けに感謝します。

おかげで、

Z

答えて

0

Z - {フィールドは} Codechargeのテンプレート用のHTMLであるので、(何かがそこにあるように)jsfiddleでjQueryが動作しません - それ私はjsfiddleでプレーし、役立つかもしれない変更のカップルを示唆も何もないではありません各テンプレートフィールドの後にスペース、(そうthis.InnerHTML == ''は本当ではありません)

があるように見えます:

  1. コードチャージは公開されるまでHTMLを正しくレイアウトしないので、閉じる</table>タグは実際には中間テーブルであり、jqueryを混乱させるでしょう。
  2. セパレータとフッタの行は両方とも 'colspan = 55'を使います。最後に</table>タグを閉じる)、それはテストコラムのために働いた。

また、サーバー側では、各列にコードチャージパネルを追加することもできます(これはグリッドビルダーウィザードのオプションですので、時間を節約できます)。 'panelname6.Visible = false'値によって異なります。

BeforeShowRowを使用して各列番号にフラグを付け、Grid BeforeShowイベントでカスタムコードを使用してパネルをループスルーして非表示にします。隠しフィールドに非表示にする列を格納し、jqueryを使用して、使用しているものと同様のコードを使用して非表示にすることもできます。グリッド・オプション等に関する

編集 - パネルは

グリッドBuilderは、「ダニ(表示/非表示機能のために)各列にパネルを追加することを可能にする処理(ステップ7と思う)で後半にいくつかのオプションを持っていますそれぞれの列(および列の見出し)の周りにパネルを追加して、コードの背後でそれらをオンまたはオフにすることができます。しかし、一意に名前を付ける必要があるため、jQueryを使用して完全な列を無効にすることもできます。

すべてのコントロールは、以下のタイプのブロックに取り込まれた場合に指定します。動的ページに/ショーのコントロールを非表示にするために使用されます <!-- BEGIN ControlType ControlName --><!-- END ControlType ControlName -->

「Grid Builder」のコードチャージマニュアルから。

パネルをオフにするの背後にあるコードで低迷列を設定するには、より多くの作業ですが、(擬似コード)のような何か:あなたができる場合は、合計については

BeforeShowRow 
    $flagCol1Hide = ($flagCol1Hide OR $Container->col1Value->GetValue() > 0); 
    $flagCol2Hide = ($flagCol2Hide OR $Container->col2Value->GetValue() > 0); 
    //etc 
end 

BeforeShow 
    // For the Grid (aka $Component in this case), with Panels as children 
    $Component->PanelCol1->Visible = !$flagCol1Hide; 
    $Container->PanelCol2->Visible = !$flagCol2Hide; 
end 

BeforeShowRowに自分の合計を含めて、BeforeShowの表示合計に追加することもできます。 (「合計でのシンプルレポート」のコードチャージヘルプを参照してください)。

+0

@eratechさんへの返信ありがとうございますが、あなたのメソッドの例を表示できますか? 私は現在、レポートビルダーを使用しています(関数には合計が表示されているため)が、グリッドを試してみましたが、あなたが話しているAjax Hide Show関数ですか? –

関連する問題