none
GridViewのコントロール取得について RRS feed

  • 質問

  • 現在、VisualStudio2008 SP1(ASP.NET)にてGridView内のImageFieldコントロールを取得し、状況に応じ背景に色を付けたいと考えております。(貼り付ける画像は透過色)

    画像(ImageField)は1行に複数存在しており、複数の画像の色を状況に応じて変えたいと思っております。

    以下の方法を試してみたのですが1つ目のImageFieldしか指定する事ができませんでした。

            protected void gvListBody_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)

            {
                Image image = (Image)e.Row.Cells[0].FindControl(Controls[0].ClientID);
                if (image != null)
                    image.Style.Add("background-color", "pink");
            }

    e.Row.Cells[0] ←のindexを変えても変化無しでした。 恐らく"Controls[0].ClientID"という指定方法が悪いのかと思うのですが、まだ解決には至っておりません。


    他にもコントロールを指定する方法があるのでしょうか?

    宜しくお願い致します。

    2012年6月8日 5:26

回答

  • 自己解決しました。

    画像の表示をImageFieldからTemplateFieldへ変更し、Imageに対しIDをつけた後

    IDからFindControlにて対象のImageコントロールを取得できる事が分かりました。

    【 デザイン 】

                                                <asp:TemplateField>
                                                    <ItemTemplate>
                                                        <asp:Image ID="image1" runat="server" ImageUrl='<%# Bind("FIELD01")%>' />
                                                    </ItemTemplate>
                                                </asp:TemplateField>

    【ソース】

            protected void gvListBody_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
            {
                Image image = (Image)e.Row.FindControl("image1");
                if (image != null)
                    image.Style.Add("background-color", "pink");
            }

    以上、ありがとうございました。


    • 回答としてマーク shino555 2012年6月8日 6:48
    • 編集済み shino555 2012年6月8日 6:49
    2012年6月8日 6:48