2009-03-05 3 views
0

私はasp.net 2.0を使用しています。私は宣言的なデータソースを使用しています。コードの中には、Foo.Barから返されたオブジェクトへのアクセスが必要なものがあります(次の例)。システムはそれをキャッシングしているので、Foo.Bar()を再呼び出しする必要はなく、そのバージョンにアクセスできるはずです。これはどうすればいいですか?宣言型データソースを使用すると、プログラムによってデータオブジェクトにアクセスできますか?

<asp:ObjectDataSource ID="MyLuckDataSource1" runat="server" 
    TypeName="Foo.Bar" SelectMethod="GetMoreFoo" 
    CacheDuration="Infinite" CacheExpirationPolicy="Sliding" 
    EnableCaching="True"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="BarID" Name="bar_code" Type="String" Direction="Input" DefaultValue="1011" /> 
    </SelectParameters> 
</asp:ObjectDataSource> 

<asp:GridView ID="GridView1" runat="server" runat="server" DataSourceID="MyLuckDataSource1" ... 

答えて

1

GridViewのOnRowDataBoundイベントを試してください。

だけのよう:

protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     var some = (Foo.SomeBar) e.Row.DataItem; 
     somelabel.Text = some.Date.ToString(); 
    } 
} 

Psと。試して、私はそれが動作することを意味します:)

0

私はフレディーはOnRowDataBoundについても正しいと思います。私はあなたが、グリッドビュー上のバインド中のセルのテキスト結果を調べることができると思うが、基本的なオブジェクトではなく、私は覚えていない。

少なくとも、GetMoreFoo()から返される前にセッションに結果を格納することができます。

私は全体モデルビュープレゼンター(MVP)のことを行い、オブジェクトデータソースをプレゼンターに接続するので、View(aspx.cs)またはPresenter上でGetMoreFoo()関数が呼び出されます。

0

また、e.ReturnValueプロパティを調べることによって、ObjectDataSource.Selectedイベントでコレクション結果をキャッチすることもできます。

protected void MyLuckDataSource1_Selected(object sender, ObjectDataSourceStatusEventArgs e) 
{ 
    List<Foo> x = (List<Foo>)e.ReturnValue; 

    // do whatever you need with the results here... 
} 
関連する問題