- PR -

HyperLinkコントロールの画像サイズの指定方法

投稿者投稿内容
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-01-10 18:55
取り急ぎ、
GridViewのテンプレートフィールドを使っていて、画像の幅・高さもDBに格納されていると仮定して、
私ならこうしますという例を書いておきます。(別にHTMLコントロールじゃなくてもいいのかもしれないですが)

コード:
<ItemTemplate>
 <a href='<%# Eval("url") %>'>
  <img width='<%# Eval("width") %>' height='<%# Eval("height") %>' 
   src='<%# Eval("imagefile") %>' alt="test" />
 </a>
</ItemTemplate>

ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2007-01-10 20:06
引用:

BTさんの書き込み (2007-01-10 10:23) より:

ぼのぼのさんの言われた方法を見て、なるほどこれだ!と思ってやってみたのですが、どうやら属性値に指定しないと無視されてしまって、表示されないようです。


私の書いたサンプルではタグの内側に書いてますが、Textプロパティに指定しても同じはずです。

引用:

別ファイル(XML)にあるリンク集のデータをGridViewにバインドするので画像のURLも動的にimgコントロールにバインドしないといけないことからimgウェブコントロールを使ってましたが、試しに生のimgタグを書いてみてもダメでした。


こちらの環境では普通にできましたよ。何か書き方がまずいんではないでしょうか?

コード:

<%@ Page Language="C#" %>
<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        System.Data.DataTable dataSrc = new System.Data.DataTable();
        dataSrc.Columns.Add("URL",typeof(string));
        dataSrc.Columns.Add("ImageURL", typeof(string));
        dataSrc.Rows.Add(new string[] { "http://www.google.co.jp", "./google.gif" });
        dataSrc.Rows.Add(new string[] { "http://www.yahoo.co.jp", "./yahoo.gif" });
        dataSrc.Rows.Add(new string[] { "http://www.atmarkit.co.jp", "./atit.gif" });
        GridView1.DataSource = dataSrc;
        GridView1.DataBind();
    }
</script>
<html>
<head>
  <title>test</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" ShowHeader="False">
      <Columns>
        <asp:HyperLinkField DataNavigateUrlFields="URL" DataTextField="ImageURL"
         DataTextFormatString="&lt;img src=&quot;{0}&quot; width=100 height=100 border=0&gt;" />
      </Columns>
    </asp:GridView>
  </form>
</body>
</html>

BT
ベテラン
会議室デビュー日: 2006/09/24
投稿数: 81
お住まい・勤務地: Tokyo
投稿日時: 2007-01-10 22:32
がーん!
ぼのぼのさんの言われるとおり、確かにできました。
確認不足でした本当にすみません。

今朝やった時にはエラーも出なかったしHTMLソースも確認したのでできないと思ったのですが。
何かしら指定に問題があったのか、あるいは保存せずに読み込んでしまったようです。申し訳ないです。

ちなみにHyperLinkコントロールのタグ内にImageコントロールを挟んでやってみましたが、それもOKでした。以下の例はDataListですが、GridViewでもOKです。

<asp:DataList ID="DataList1" runat="server" DataSourceID="ObjectDataSource1" RepeatColumns="6"
RepeatDirection="Horizontal" Width="100%" Visible="True">
 <ItemTemplate>
  <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Url") %>'>
   <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("Image") %>' AlternateText='<%# Eval("Title") %>' Width="88px" />
  </asp:HyperLink>
 </ItemTemplate>
</asp:DataList>

なお、べるさんの方法ももちろんOKでした。コントロールのプロパティでできる範囲内でなんとかしようと考えるのでなく、直接HTMLタグを書けばいいという発想は勉強になりました。以後、参考にせさてもらいたいと思います。

お騒がせしてすいませんでした。

どうもありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)