- ベストアンサー
データグリッドでの画像表示
データベースにURLをStringとして保存してる のですが、データグリッドで読み込んだ時に 画像を表示するようにしたいのですが、どうしたらよいでしょうか? ご存知の方がいらっしゃりましたらアドバイスをお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
IFRAMEを動的に追加してあげたらよいと思います。 Page_Loadを利用し、派生させる方法を書いておきます。 [ほげ.ASPX] のbodyタブ内に以下を追加してください。 <asp:datagrid id="DataGrid1" runat="server" Width="100%"></asp:datagrid> [ほげ.ASPX.vb] の中に、以下のコードを仕込んでください。 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' ページを初期化する ユーザー コードをここに挿入します。 Dim l_dtb As DataTable = データテーブル() Me.DataGrid1.DataSource = l_dtb Me.DataGrid1.DataBind() Dim l_dgアイテム As DataGridItem Dim l_tbセル_URL As TableCell Dim l_tbセル_FRM As TableCell Dim l_ctlFRM As UI.Control For Each l_dgアイテム In Me.DataGrid1.Items '先頭のセルを取得 l_tbセル_URL = l_dgアイテム.Cells(0) '新フレームを派生 l_ctlFRM = 新_IFRAME(l_tbセル_URL.Text) '新たなセルを派生 l_tbセル_FRM = New TableCell() 'セルにフレームを追加 l_tbセル_FRM.Controls.Add(l_ctlFRM) '新たなセルを追加 l_dgアイテム.Cells.Add(l_tbセル_FRM) Next End Sub Private Function 新_IFRAME(ByVal p_strURL As String) As System.Web.UI.HtmlControls.HtmlGenericControl Dim l_objFrame As New System.Web.UI.HtmlControls.HtmlGenericControl("IFRAME") l_objFrame.Attributes("frameborder") = "0" l_objFrame.Attributes("width") = "100%" l_objFrame.Attributes("height") = "100%" l_objFrame.Attributes("scrolling") = "AUTO" l_objFrame.Attributes("src") = p_strURL Return l_objFrame End Function Private Function データテーブル() As DataTable Dim l_dtbデータテーブル As New DataTable() l_dtbデータテーブル.Columns.Add("URL", System.Type.GetType("System.String")) l_dtbデータテーブル.Rows.Add(New String() {"http://okwave.jp"}) l_dtbデータテーブル.Rows.Add(New String() {"http://okwave.jp/kotaeru.php3?q=2165424"}) Return l_dtbデータテーブル End Function
お礼
非常に丁寧なアドバイスありがとうございます。とても参考になりました。