none
GridViewのFooterもHeaderやItemと同様に非表示、表示列をコントロールしたい RRS feed

  • 質問

  • GridViewにおいて

    Headerはヘッダ全体の表示/非表示可能で、さらにItem列を非表示に設定すると自動的に対応するヘッダカラムも非表示になりますが、

    Footerはフッター全体の表示/非表示のプロパティがあるだけで、Itemのカラム表示/非表示とは連動できないものなのでしょうか。

    2011年1月21日 12:37

回答

  • フッターの TableCellCollection から Foot3 に該当する TableCell

    を削除したらどうなりますか? (未検証です。できなかったらすみません)


    自宅に検証できる環境がないので、

    明日出社した際に確認してみます。

    ありがとうございます。

    すみません。大失態していました。

    GridView1_RowCreatedで列のVisibleプロパティ設定をしている箇所で

    RowTypeが DataControlRowType.DataRow と DataControlRowType.Header の場合にだけ

    CellのVisibleプロパティ設定処理を通るようになってしまっていました。

    RpwTypeの比較条件を外して、どのRowTypeの場合にでもVisible設定するようにしたら

    FooterRowでも列表示/非表示の設定が出来ました。。。お騒がせしました & ありがとうございました。

    • 回答としてマーク 山本春海 2011年2月3日 2:08
    2011年1月23日 4:47

すべての返信

  • Windows アプリケーションと Web アプリケーションの根本的な違いを理解
    されているでしょうか?

    どうも、基本を理解されていないような気がします。

    2011年1月21日 13:34
  • すみません、質問の内容を取り違えていて、はずれたレスでした。

    フッターには TableCell は生成されているはずですが、その Text は空
    なので、自力で(プログラムを書いて)Text プロパティに文字列を設定
    してやれば表示されます。

    フッターに何を表示したいのか分かりませんが、ヘッダーと同じテキスト
    を表示したいなら、ヘッダーの各セルのテキストをフッターの各セルのテ
    キストにコピーしてやればよさそうです。

    例としては、以下のような感じです。

    TableCellCollection headerCells;
       
    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.Header)
        {
            headerCells = e.Row.Cells;
        }
        else if (e.Row.RowType == DataControlRowType.Footer)
        {
            for (int i = 0; i < e.Row.Cells.Count; i++)
            {
               e.Row.Cells[i].Text = headerCells[i].Text;
            }
        }     
    }

     

    2011年1月22日 5:33
  • フッターには TableCell は生成されているはずですが、その Text は空

    なので、自力で(プログラムを書いて)Text プロパティに文字列を設定
    してやれば表示されます。

    フッターに何を表示したいのか分かりませんが、ヘッダーと同じテキスト
    を表示したいなら、ヘッダーの各セルのテキストをフッターの各セルのテ
    キストにコピーしてやればよさそうです。

    例としては、以下のような感じです。

    TableCellCollection headerCells;
       
    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.Header)
        {
            headerCells = e.Row.Cells;
        }
        else if (e.Row.RowType == DataControlRowType.Footer)
        {
            for (int i = 0; i < e.Row.Cells.Count; i++)
            {
               e.Row.Cells[i].Text = headerCells[i].Text;
            }
        }     
    }

    回答有難うございます。

    フッターにもテキストボックスを作ってGridViewに表示したデータとは別に、新規データ入力エリアとして

    利用したいと考えていたのです。

    一部のアイテムカラムにデータを持たせたまま、利用者に見せないようにするカラムを非表示としていますが、

    フッターにテキストボックスを配置したら以下のように、フッターだけが残ってしまったのです。

    通常の配置

    +------+------+------+------+

    |Head1 |Head2 |Head3 |Head4 |

    +------+------+------+------+

    |Item1 |Item2 |Item3 |Item4 |

    +------+------+------+------+

    |Foot1 |Foot2 |Foot3 |Foot4 |

    +------+------+------+------+

    非表示設定後の配置(左から3列目を非表示に設定した場合)

    +------+------+------+

    |Head1 |Head2 |Head4 |

    +------+------+------+

    |Item1 |Item2 |Item4 |

    +------+------+------+------+

    |Foot1 |Foot2 |Foot3 |Foot4 |

    +------+------+------+------+


     

    2011年1月22日 6:25
  • > フッターにテキストボックスを配置したら以下のように、フッターだけが
    > 残ってしまったのです。

    > |Foot1 |Foot2 |Foot3 |Foot4 |

    それをどのようにしたいのか具体的に書いてもらえませんか?

    2011年1月22日 6:49
  • > フッターにテキストボックスを配置したら以下のように、フッターだけが
    > 残ってしまったのです。

    > |Foot1 |Foot2 |Foot3 |Foot4 |

    それをどのようにしたいのか具体的に書いてもらえませんか?

    非表示設定後の配置(左から3列目を非表示に設定した場合)

    +------+------+------+

    |Head1 |Head2 |Head4 |

    +------+------+------+

    |Item1 |Item2 |Item4 |

    +------+------+------+------+

    |Foot1 |Foot2 |Foot3 |Foot4 |

    +------+------+------+------+

    となってしまったところを

    +------+------+------+

    |Head1 |Head2 |Head4 |

    +------+------+------+

    |Item1 |Item2 |Item4 |

    +------+------+------+

    |Foot1 |Foot2 |Foot4 |

    +------+------+------+

    と、したいのですが。。。

    2011年1月22日 6:55
  • フッターの TableCellCollection から Foot3 に該当する TableCell

    を削除したらどうなりますか? (未検証です。できなかったらすみません)

    2011年1月22日 7:54
  • フッターの TableCellCollection から Foot3 に該当する TableCell

    を削除したらどうなりますか? (未検証です。できなかったらすみません)


    自宅に検証できる環境がないので、

    明日出社した際に確認してみます。

    ありがとうございます。

    2011年1月22日 8:10
  • フッターの TableCellCollection から Foot3 に該当する TableCell

    を削除したらどうなりますか? (未検証です。できなかったらすみません)


    自宅に検証できる環境がないので、

    明日出社した際に確認してみます。

    ありがとうございます。

    すみません。大失態していました。

    GridView1_RowCreatedで列のVisibleプロパティ設定をしている箇所で

    RowTypeが DataControlRowType.DataRow と DataControlRowType.Header の場合にだけ

    CellのVisibleプロパティ設定処理を通るようになってしまっていました。

    RpwTypeの比較条件を外して、どのRowTypeの場合にでもVisible設定するようにしたら

    FooterRowでも列表示/非表示の設定が出来ました。。。お騒がせしました & ありがとうございました。

    • 回答としてマーク 山本春海 2011年2月3日 2:08
    2011年1月23日 4:47