none
GridViewに画像を表示しクリックされたら別ページに遷移させる方法知りませんか? RRS feed

  • 質問

  •  

    Visual Studio 2005を使い、ASP.NETページを作っています。言語は Visual Basic.です

     

    GridViewコントロールにImageFieldコントロールを追加してDBから取得した情報を元に画像を表示しているのですが,

    この画像をクリックし別ページに遷移させたいのですが、やり方がわからずに困っています。googleで探しても参考になる

    ページが見つけられないので,わかる人がいたら方法を教えてください

     

    #結果的に上記の事ができればいいのでImageFiledではなく HyperLinkFieldやButtonFieldでもいいです

    2007年9月27日 9:31

すべての返信

  • ImageButtonを代わりに使えないでしょうか?

     

    #偶然、同じような質問が続けてありましたが、以下のようなやり方もあるようで、参考になります。

     

    ASP.NETのGridViewのImageField列のクリックイベントを取得したい
    http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=2198772&SiteID=7&mode=1

     


     

    2007年9月27日 11:40
    モデレータ
  • お返事ありがとうございます。いろいろ試した結果GridViewコントロールに対してデザイナから設定する場合は

    意図した動きにすることができました

     

    aspxファイルから抜粋------------------------------------------------

    <asp:TemplateField>
        <ItemTemplate>
             <asp:ImageButton ID="ImageButton1" runat="server"
              CommandArgument='<%# databinder.eval(container.dataitem,"NO", "./Download.aspx?ID={0}") %>'
                   CommandName="Click"

            ImageUrl='<%# databinder.eval(container.dataitem,"FILE_NAME", "./OutputImage.aspx?EXT={0}") %>'
                 Width="30px" />
        </ItemTemplate>
    </asp:TemplateField>

    ただこれをloadイベントなどで動的に設定したいので、いろいろやってみましたがうまくいきませんでした。

     

    #Cのサンプルを元にVBに変えようとしたんですが、うまくいかない..

     

    -----GridViewへの追加部分

    Dim picIF3 As TemplateField = New TemplateField

    Dim img As ImageCtrl = New ImageCtrl

    picIF3.ItemTemplate = img

    Me.GridView1.Columns.add(picIF3)

     

    ----ImageCtrl

        Public Class ImageCtrl
            Implements System.Web.UI.ITemplate

     

            Public Sub InstantiateIn(ByVal container As Control) _
                Implements ITemplate.InstantiateIn

     

                Dim img As ImageButton = New ImageButton

                img.CommandArgument = "./DownloadFile.aspx?ID=14280"    --- ここはとりえずbindしない
                img.CommandName = "Click"
                img.Width = New Unit(30)

     

                AddHandler img.DataBinding, AddressOf OnDataBind
                container.Controls.Add(img)

            End Sub

     

            Public Sub OnDataBind(ByVal sender As Object, ByVal e As EventArgs)
                Dim img As ImageButton = CType(sender, ImageButton)
                Dim container As GridViewRow = CType(img.NamingContainer, GridViewRow)

                img.ImageUrl = "./OutputImage.aspx?EXT=" & CType(container.DataItem, DataRowView)("FILE_COMMENT").ToString
            End Sub
        End Class

     

    2007年9月28日 8:20
  • どのようにうまくいかないのかわからないのですが、以下に動的にテンプレートを作成する例があります。

     

    方法 : ASP.NET Web サーバー コントロールのテンプレートを動的に作成する
    http://msdn2.microsoft.com/ja-jp/library/0e39s2ck(VS.80).aspx

    2007年9月29日 0:53
    モデレータ