我有一个简单的webcontrol.ascx,带有listview和2个Integer字段(显示某些元素的nbr。)。 Listview从asp:ObjectDataSource填充。
我的问题是listview和我的2个整数值都需要访问同一个数据库表,我真的不想进行两次调用(在2个字段的Page_Load内部和ObjectDataSource的SelectMethod内部)
问题是我没有看到两种方法(Page_Load和SelectMethod)交换任何数据的简单方法(例如,使用本地属性)。
private mydata As List(of ...)
protected Sub Page_Load(...) Handles Me.Load
mydata = DbManager.HeavyCall(...)
literalValueA.Text = (From i in mydata ..... ).Count
literalValueB.Text = (From i in mydata ..Where ... ).Count
End Sub
' SelectMethod for asp:ObjectDataSource
public Function GetData( ... ) As List(of ...)
mydata.DoSomething(...) ' mydata is Nothing here...
end Function
我希望有人可以告诉我一个很好的解决方案(最好没有外部缓存......)如何在两种方法之间交换数据..
答案 0 :(得分:1)
令人遗憾的解决方案是:不使用 asp:ObjectDataSource ......
现在我正在使用 asp:LinqDataSource ,它提供了一个'选择'事件,我可以在其中修改前端的控件。
' Selecting-Event from my LinqDataSource
private Sub myLinqDataSource_Selecting(sender .., e .. ) Handles myLinq..Selecting
dim mydata = DbManager.HeavyCall(..)
literalValueA.Text = (From i in mydata ..... ).Count ' works
literalValueB.Text = (From i in mydata ..Where ... ).Count ' works
e.Result = mydata
End Sub