我有Page
,GridView
使用ObjectDataSource
SelectMethod
和DropDownList
。除其他外,SelectMethod
获取包含多个ID的字符串数组(用于过滤数据) - 但我还需要DataSource
作为DropDownList
。
唉,我不能DataBind
DropDownList
SelectMethod
,因为它是空的。
一个想法是将此string[]
绑定到Session
- 变量,但之后我必须在每Page_Load
次重新设置它或从Session
中删除它如果我想要更新数据库上的某些内容,请在每个其他页面上进行更新。
我正在寻找的是Page_Load
和ObjectDataSource
s SelectMethod
中可用的某种变量,但是在离开页面时会自行删除(即导航到我的Web应用程序上的任何其他页面(最好不必在每个其他页面上调用方法)。
我希望你能理解我的问题。
谢谢,
丹尼斯
答案 0 :(得分:1)
据我所知,获取字符串数组的需要源于单独的往返将导致的性能损失。要解决此问题,您可以创建一个单独的对象来提供对象数据源。这个对象有两个方法,一个用于获取字符串数组,另一个用于获取网格数据(即select方法)
然后,您可以在页面中放置这样的对象,并以惰性方式获取其中的数据。如果对象调用任何数据,则将其他部分存储在字段中。然后,您可以使用ObjectDataSource ObjectCreating事件将页面上的此对象传递给ObjectDataSource
protected void odsSomething_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
{
e.ObjectInstance = YourInsntanceAlreadyInThePage;
}
这样你就可以避免往返。
还要考虑使用异步客户端调用同时进行两次Web服务调用,以便您可以同时进行两次调用。如果这是可行的,取决于你的逻辑流程。
答案 1 :(得分:1)
我正在寻找的是某种变量,它可以在Page _
Load
和我的ObjectDataSource
的{{1}}中使用,但在离开页面时自行删除(即导航到我的Web应用程序上的任何其他页面(最好不必在每个其他页面上调用方法)。
在类似的情况下,我使用了当前SelectMethod
的{{1}}属性。它是一个Items
(非泛型),因此可以保存由任意HttpContext
s锁定的任意IDictionary
,其生命周期恰好是当前请求的持续时间,因此将会消失请求结束后立即生效。使用:
object