0

我有一个简单的 webcontrol.ascx,带有一个列表视图和 2 个整数字段(显示某些元素的 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

我希望有人能告诉我如何在这两种方法之间交换数据的一个很好的解决方案(最好没有外部缓存..)。

4

1 回答 1

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
于 2013-08-27T06:43:51.690 回答