2012-01-19 8 views
0

私は、次の(ジェネリック)ASPコードがある場合:ASP式でODS内のデータにアクセスするにはどうすればよいですか?

<asp:ObjectDataSource runat="server" ID="myODS">...</asp:ObjectDataSource> 

<asp:GridView runat="server" ID="myGV" DataSourceID="myODS"> 
    <Columns> 

     <asp:TemplateField> 
     <ContentTemplate> 
      <asp:Label runat="server" ID="myLabel" Text='<%# [What goes here?] %>' /> 
     </ContentTemplate> 
     </asp:TemplateField> 

     <asp:BoundField ... /> 
     <%-- Other columns... --%> 

    </Columns> 
</asp:GridView>

は私が私のテンプレートフィールド内で、ASPの式の中で何を呼び出すことができ、私は私のODS結果にアクセスすることができるようになりますか?基本的には、表現の中で、私はrow("ID")のようなことをして、私のODSから特定の値を得ることができます。

答えて

1

特定のプロパティを指定するために使用できるさまざまな構文があります。最も単純には、evalメソッドを使用することです:

<asp:Label runat="server" ID="myLabel" Text='<%# Eval("ID") %>' /> 

これはDataBinder.Eval静的メソッドを使用して、より詳細な構文については、短手の構文ですので、あなたがしたい場合は、このより冗長な構文を使用することができます。

:私はASP.Net 2.0と高いが、「バインド」メソッドをサポートしているものを言及するのを忘れてしまった 一つのこと:DataBinder.Eval

編集上のMSDNドキュメントの

<asp:Label runat="server" ID="myLabel" Text='<%# DataBinder.Eval(Container.DataItem, "ID") %>' /> 

<asp:Label runat="server" ID="myLabel" Text='<%# Bind("ID") %>' /> 

2方向データバインディングを名目上サポートしています。したがって、Bindメソッドを使用する場合は、挿入された行または削除された行から値を手動でスクレイプする必要はなく、ASP.Netインフラストラクチャは新しいオブジェクトまたは変更されたオブジェクトの生成を処理します。しかし、実際には、これを使用するための多くの注意点があります。あなたのドメインオブジェクトはデフォルトのコンストラクタを持っていて、単にプロパティで構成されていなければなりません。実際には、これは非常に制限的なので、私はそれが非常に有用なものだとは思わない。しかし、私はそれを指摘したかっただけです。

+0

ああ、完璧、私はそれが何か簡単だと思った。ありがとう! – qJake

関連する問題