我有一个Page
,一个GridView
和一个ObjectDataSource
和一个SelectMethod
使用的DropDownList
。 SelectMethod
除其他外,得到一个包含多个ID(用于过滤数据)的字符串数组-但我也需要将其作为DataSource
的DropDownList
。
las,我无法在DataBind
内的DropDownList
SelectMethod
,因为它为null。
一个想法是将这个string[]
绑定到一个Session
变量,但是如果我想要的话,我要么必须在每个Page_Load
上重新设置它,要么将其从其他页面上的Session
中删除。更新以防数据库上的某些内容发生更改。
我正在寻找的是Page_Load
和ObjectDataSource
的SelectMethod
中都可用的某种变量,但是在离开页面时它会自行删除(即,导航到Web应用程序上的任何其他页面(最好不必在每个其他页面上调用方法)。
我希望你能理解我的问题。
谢谢,
丹尼斯
最佳答案
据我了解,需要获取字符串数组是由于单独往返会导致性能下降。要解决此问题,您可以创建一个单独的对象来提供对象数据源。该对象将有两种方法,一种用于获取字符串数组,另一种用于获取网格的数据(即select方法)。
然后,您可以在页面中放置一个类似的对象,然后以惰性方式获取数据。如果对象调用任何数据,则它将另一部分存储在字段中。然后,您可以使用ObjectDataSource ObjectCreating事件将页面上的此对象传递给ObjectDataSource。
protected void odsSomething_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
{
e.ObjectInstance = YourInsntanceAlreadyInThePage;
}
这样,您将避免往返。
还可以考虑使用异步客户端调用同时进行两个Web服务调用,以便您可以同时进行两个调用。这是否可行取决于您的逻辑流程。
关于c# - ASP.NET控件可见性困境,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9479910/