C# Programming

ImageDataBinder.Eval

開発環境: Visual Studio 2005

 

1.目次

1.目次
2.目的
3.参考書
4.Eval
5.Visual Studio 2005からの設定方法
6.エバる時の注意

2.目的

GridViewなどのテンプレート機能は、カスタマイズする上で非常に強力な機能です。しかし、このテンプレートを扱う際にデータバインドを行う必要が出てきます。このときに必要となるのが、Evalです。 なれない書式の割りに使う頻度が高いので、メモっておきます。

3.参考書

  1. MSDN: DataBinder.Eval Method
  2. VS2005 Help: Data-Binding Expression Syntax

4.Eval

Evalとは、データバインドするためのメソッドです。

aspxファイルの中でデータバインドするには、<%#%>で囲んだ形でEvalメソッドを表記する必要があります。これにより、実行時にEval式が評価され動的にデータバインドされたHTMLが生成されます。

Eval の使用例
<asp:GridView ID="GridView1" runat="server"....>
   <Columns>
        <asp:TemplateField HeaderText="...">
            <ItemTemplate>
                <asp:ImageButton ID="ImageButton1" runat="server" 
                    AlternateText='<%# Eval("SiteName") %>'
                    CommandArgument='<%# Eval("URL") %>'
                    ImageUrl='<%# Eval("LogoURL") %>' 
                    OnClientClick="<%# Eval("URL", 
                    "OpenNewWindow('{0}')") %>" />
            </ItemTemplate>
        </asp:TemplateField>

この例からわかるように、Eval には書式なし、書式付のシンタックスがあります。

  • プロパティ名='<%# Eval("データバインドするフィールド名") %>'
  • プロパティ名="<%# Eval("データバインドするフィールド名", "書式") %>"

5.Visual Studio 2005からの設定方法

Visual Studio 2005 を使うと、簡単に設定することができます。

(1)たとえばGridViewにデータソースを設定します。

(2)GridView タスクから「列の編集」をクリックする。

Image

(3)するとフィールドの編集ダイアログが表示されるので、カスタマイズしたい項目を選択し、「このフィールドを TemplateField に変換します。」をクリックし、テンプレートフィールドにする。

Image

(4)GridViewタスクより、「テンプレートの編集」を選択する。

Image

(5)すると、テンプレート編集モードになるので、カスタマイズしたいItemTemplateを選択する。

Image

(6)対象のItemTemplateが表示されるので、適当なデータバインド可能なコントロールなどを貼り付ける。ここではImageButtonを貼り付けています。

Image

(7)貼り付けたコントロールのタスクより、「DataBindings の編集」を選択する。

Image

(8)すると、次のようなデータバインド編集ダイアログが表示されます。
あとは、バインドするプロパティを選択し、どのフィールドをバインドするかを選択します。「形式」をしてしなければ、プロパティ名='<%# Eval("データバインドするフィールド名") %>' という形でコードが自動生成されます。

Image

(9) あるいは「形式」を指定することにより、プロパティ名="<%# Eval("データバインドするフィールド名", "書式") %>" の書式でコードが自動生成されます。

Image

6.エバる時の注意

.NETの世界では、Evalとはデータを遅延評価するためのDataBinder.Evalメソッドのことを指します。また、このEvalメソッドにより遅延評価することを一般的に「エバる」と表現することがあります。しかし、同じ「エバる」でもいくつかの間違いやすい表現がありますので、次にまとめました。間違えると致命的な結果をもたらす場合がありますので、表記や取り扱いには十分注意してください。

  • DataBinder.Eval
  • Lispのeval
  • えばる・・・えらそうに振舞うこと。
  • エバる・・・エバンジェリストのように振舞う。
  • エウ”ァる・・・相手によっては致命的。