.NET TIPS [ASP.NET]DataGridコントロールの列を実行時に表示/非表示するには?デジタルアドバンテージ2003/11/14 |
|
|
DataGridコントロールの列は、その定義時にVisible属性により表示/非表示を切り替えることができる。この属性は、実行時にはDataGridオブジェクトのVisibleプロパティとして読み書きでき、これを利用することにより実行時に動的に列の表示/非表示を切り替えることができる。
ここではこのVisibleプロパティを利用して、次の画面で示すようなプログラムを作成してみる。このプログラムでは、グリッドのヘッダーに表示されている列名をクリックすることにより、その列を隠すことができる。また、[すべての列を表示]ボタンをクリックすれば、グリッドのすべての列が表示される。この場合には起動時に非表示だった「日付」列も表示するようにしている。
サンプル・プログラム(hidecolumn.aspx)の起動時の画面 |
ヘッダーの[タイトル]をクリックしたときの画面 |
「タイトル」列が非表示になる。ページの移動を行っても列は非表示のままとなる。 |
[すべての列を表示]ボタンをクリックしたときの画面 |
「日付」列は起動時には表示されないが、[すべての列を表示]ボタンがクリックされたときにのみ表示される。 |
ヘッダーのクリックによる列の非表示
ヘッダーに表示されている列名をリンクボタンとして機能させるために、ここでは「TIPS:[ASP.NET]DataGridコントロールにソート機能を追加するには?」で解説しているソート機能を流用している。ソート機能といっても、DataGridコントロールが提供する機能は、SortExpression属性が設定された列の列名部分をリンクボタンにして、SortCommandイベントを発生するだけである。本来SortCommandイベントのイベント・ハンドラではクリックされた列によりデータソースの並べ替えを行うが、ここではその代わりに列を非表示にしている。
クリックされた列を非表示にするSortCommandイベントのイベント・ハンドラは次のように記述できる。
void MyGrid_Sort(object s, DataGridSortCommandEventArgs e) {
foreach (DataGridColumn column in MyGrid.Columns) {
if (column.SortExpression == e.SortExpression) {
column.Visible = false;
}
}
}
このメソッドでは、クリックされた列のSortExpression属性の値をe.SortExpressionとして取得できる。この値をグリッド内のすべての列のSortExpressionプロパティと順に比較することにより、クリックされた列を特定できる。
すべての列の表示
[すべての列を表示]ボタンがクリックされたときの処理は、グリッドのすべての列のVisibleプロパティをtrueに設定するだけだ。このボタンのイベント・ハンドラは次のようになる。
void MyButton_Click(object s, CommandEventArgs e) {
foreach (DataGridColumn column in MyGrid.Columns) {
column.Visible = true;
}
}
列を表示/非表示するサンプル・プログラム
今回示したサンプル・プログラムのソース・コードは次のようになっている。これは「TIPS:[ASP.NET]DataGridコントロールでページ表示するには?」で示しているサンプル・プログラムにコードを追加して作成したものだ。追加した部分は太字で示している。
|
|
列を表示/非表示するC#のサンプル・プログラム(hidecolumn.aspx) | |
「日付」列を定義している最後の<asp:BoundColumn>タグにはVisible="false"属性を記述しているため、プログラムの起動時には画面上に表示されない。
カテゴリ:Webフォーム 処理対象:DataGridコントロール 使用ライブラリ:DataGridコントロール 関連TIPS:[ASP.NET]DataGridコントロールにソート機能を追加するには? 関連TIPS:[ASP.NET]DataGridコントロールでページ表示するには? |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|