C# 如果使用声明性数据源,能否以编程方式访问数据对象?
我正在使用asp.NET2.0。我正在使用声明性数据源。对于代码背后的某些内容,我希望访问Foo.Bar返回的对象(在下面的示例中)。系统正在缓存它,因此我应该能够访问该版本,而不必重新调用Foo.Bar()。我该怎么做C# 如果使用声明性数据源,能否以编程方式访问数据对象?,c#,asp.net,objectdatasource,C#,Asp.net,Objectdatasource,我正在使用asp.NET2.0。我正在使用声明性数据源。对于代码背后的某些内容,我希望访问Foo.Bar返回的对象(在下面的示例中)。系统正在缓存它,因此我应该能够访问该版本,而不必重新调用Foo.Bar()。我该怎么做 <asp:ObjectDataSource ID="MyLuckDataSource1" runat="server" TypeName="Foo.Bar" SelectMethod="GetMoreFoo" CacheDuration="Infini
<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" ...
尝试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();
}
}
注:我的意思是说,try是有效的:)我认为弗雷迪对OnRowDataBound的看法是正确的。虽然我认为您只能在gridview绑定期间检查单元格的文本结果,而不能检查底层对象,但我记不起来了
在从GetMoreFoo()返回结果之前,至少可以将结果存储在会话中
我完成了整个模型视图演示器(MVP)的工作,并将对象数据源连接到演示器,以便在调用GetMoreFoo()函数时可以访问视图(aspx.cs)或演示器上的任何内容。您还可以通过检查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...
}
protectedvoid MyLuckDataSource1_已选中(对象发送方,ObjectDataSourceStatusEventArgs e)
{
列表x=(列表)e.ReturnValue;
//用这里的结果做你需要的任何事情。。。
}