2009-03-05 2 views
0

Ich benutze asp.net 2.0. Ich verwende deklarative Datenquellen. Für einige Dinge im Code dahinter möchte ich Zugriff auf das von Foo.Bar zurückgegebene Objekt (im folgenden Beispiel). Das System speichert es zwischen, so dass ich in der Lage sein sollte, auf diese Version zuzugreifen, anstatt Foo.Bar() erneut aufrufen zu müssen. Wie mache ich das?Wenn Sie eine deklarative Datenquelle verwenden, können Sie programmatisch auf das Datenobjekt zugreifen?

<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" ... 

Antwort

1

Try OnRowDataBound Ereignis der GridView.

Genau wie:

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. mit versuchen, ich meine es funktioniert :)

0

Ich denke, Freddy hat recht über die OnRowDataBound sogar. Obwohl ich denke, dass Sie nur die Textergebnisse der Zellen während der Bindung auf der Gridview untersuchen können, anstatt das zugrunde liegende Objekt, aber ich kann mich nicht erinnern.

Zumindest können Sie die Ergebnisse in der Sitzung speichern, bevor sie von GetMoreFoo() zurückgegeben werden.

Ich mache die ganze MVP-Sache (Model View Presenter), und ich verdrahte die Objektdatenquelle mit dem Präsentator, damit ich auf die Ansicht (aspx.cs) oder den Presenter zugreifen kann, wenn GetMoreFoo() Funktion wird aufgerufen.

0

Sie können Ihre Sammlungsergebnisse auch im ObjectDataSource.Selected-Ereignis abfangen, indem Sie die e.ReturnValue-Eigenschaft prüfen.

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

    // do whatever you need with the results here... 
} 
Verwandte Themen