访问数据检索

问题描述:

我一直试图找到这个问题的答案现在几天,我发现很难相信这不能完成。访问数据检索

我想要去当页面正在建设中当一个SqlDataSource.Select方法自动由ASP.NET运行时称那是建立在DataSet/DataTable

我知道我可以在后面的代码中运行它,但是这使得第二次访问数据库,我真的很想避免这种情况。我遇到的每个例子都告诉你在后面的代码中执行Select方法。

有什么方法可以访问已经检索的数据吗?

+1

你知道,我试图找出答案一次,几年前,并决定它只是更容易绑定代码隐藏的代码,所以我更容易访问数据集。如果有人知道如何做到这一点,这可能会改变我今后如何处理类似的情况。 +1询问。 – David

+2

我根本不会使用该控件。而是使用ADO.NET(如'DataAdapter.Fill(DataTable)')或一个真正的ORM映射器(如NHibernate或Entity框架)。无论如何,目前还不清楚为什么你认为“代码背后的第二次访问数据库”。然后使用'if(!IsPostBack)'。 –

+0

真的没有选择控制。我需要对现有页面进行更改,而不用重写它。当您调用SqlDataSource上的Select方法时,它会根据Microsoft访问数据库http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.sqldatasource.select.aspx – dscarr

您可以使用此代码尝试 - 基于ToTable方法

DataView view = (DataView)SqlDataSource.Select(...); 
DataTable table = view.ToTable(); 

链接:http://msdn.microsoft.com/en-us/library/wec2b2e6.aspx

+0

This是我正在谈论的代码。在SqlDataSource上执行Select方法将从数据库中检索数据。 (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sqldatasource.select.aspx)我已经使用了很多次,但在这种情况下,我想避免第二次旅行。 – dscarr

+0

您能否解释 –

+0

“避免第二次旅行”意味着您已经获得了某处的数据。在这种情况下,你可以通过提供一个虚拟的'DataSource'来拦截在预渲染期间对'OnSelect()'的调用,并用你自己的(缓存的?)数据集替换结果数据? –