我有一个Page,一个GridView和一个ObjectDataSource和一个SelectMethod使用的DropDownListSelectMethod除其他外,得到一个包含多个ID(用于过滤数据)的字符串数组-但我也需要将其作为DataSourceDropDownList
las,我无法在DataBind内的DropDownList SelectMethod,因为它为null。
一个想法是将这个string[]绑定到一个Session变量,但是如果我想要的话,我要么必须在每个Page_Load上重新设置它,要么将其从其他页面上的Session中删除​​。更新以防数据库上的某些内容发生更改。

我正在寻找的是Page_LoadObjectDataSourceSelectMethod中都可用的某种变量,但是在离开页面时它会自行删除(即,导航到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/

10-10 16:05