SqlDataSource.Select(DataSourceSelectArguments) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
使用 SelectCommand SQL 字符串和集合中的任何 SelectParameters 参数从基础数据库检索数据。
public:
System::Collections::IEnumerable ^ Select(System::Web::UI::DataSourceSelectArguments ^ arguments);
public System.Collections.IEnumerable Select(System.Web.UI.DataSourceSelectArguments arguments);
member this.Select : System.Web.UI.DataSourceSelectArguments -> System.Collections.IEnumerable
Public Function Select (arguments As DataSourceSelectArguments) As IEnumerable
参数
- arguments
- DataSourceSelectArguments
一个 DataSourceSelectArguments 对象,用于请求对基本数据检索以外的数据执行的操作。
返回
IEnumerable数据行的列表。
例外
对象 SqlDataSource 无法与基础数据源建立连接。
示例
以下示例演示如何以编程方式调用 Select 方法,并根据查询结果设置值。 以下示例显示了 Web 控件的声明性代码。
<asp:SqlDataSource
ID="SqlDataSource1"
runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT Count(*) FROM [Products] WHERE ([ReorderLevel] > 0)">
</asp:SqlDataSource>
<asp:Label
ID="Label1"
runat="server"
Text="">
</asp:Label>
<br />
<asp:Button
ID="Button1"
Text="Check Reorder Status"
runat="server"
onclick="Button1_Click" />
<asp:SqlDataSource
ID="SqlDataSource1"
runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT Count(*) FROM [Products] WHERE ([ReorderLevel] > 0)">
</asp:SqlDataSource>
<asp:Label
ID="Label1"
runat="server"
Text="">
</asp:Label>
<br />
<asp:Button
ID="Button1"
Text="Check Reorder Status"
runat="server"
onclick="Button1_Click" />
以下示例演示如何以编程方式调用 Select 该方法。 该 SqlDataSource 控件返回一个整数。 整数的值用于设置控件的文本 Label ,并确定是否显示 HyperLink 控件。
protected void CheckReorderStatus()
{
DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
int reorderedProducts = (int)dv.Table.Rows[0][0];
if (reorderedProducts > 0)
{
Label1.Text = "Number of products on reorder: " + reorderedProducts;
}
else
{
Label1.Text = "No products on reorder.";
}
}
protected void Button1_Click(object sender, EventArgs e)
{
CheckReorderStatus();
}
Protected Sub CheckReorderStatus()
Dim dv As DataView
Dim reorderedProducts As Integer
dv = CType(SqlDataSource1.Select(DataSourceSelectArguments.Empty), DataView)
reorderedProducts = CType(dv.Table.Rows(0)(0), Integer)
If (reorderedProducts > 0) Then
Label1.Text = "Number of products on reorder: " & reorderedProducts
Else
Label1.Text = "No products on reorder."
End If
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
CheckReorderStatus()
End Sub
注解
该方法 Select 在页面生命周期的阶段自动调用 PreRender 。 它由已通过其DataSourceID属性附加到SqlDataSource控件的数据绑定控件调用。
如果属性设置为DataSet值,DataSourceMode该方法Select将返回一个DataView对象。 如果属性设置为DataReader值,DataSourceMode该方法Select将返回一个IDataReader对象。 IDataReader读取完数据后关闭对象。
在执行 Select 操作之前, OnSelecting 将调用该方法以引发 Selecting 事件。 可以处理此事件来检查参数的值,并在操作之前 Select 执行任何处理。
Select操作完成后,OnSelected将调用该方法以引发Selected事件。 可以处理此事件来检查任何返回值和错误代码,以及执行任何后期处理。
DataSourceMode如果属性设置为SqlDataSourceMode.DataSet并启用缓存,则对象会在SqlDataSource操作期间Select从缓存中检索数据并将数据保存到缓存。 缓存是根据组合和CacheExpirationPolicy属性指定的CacheDuration缓存行为创建的、放弃的或刷新的。
重要
在 Microsoft Windows 身份验证下使用客户端模拟时,当第一个用户访问数据时,数据将缓存。 如果其他用户请求相同的数据,则会从缓存中检索数据。 通过对数据库进行另一次调用来验证用户对数据的访问权限,不会检索数据。 如果希望多个用户访问数据,并且希望数据库的安全配置验证每次检索数据,请不要使用缓存。
DataSourceMode如果属性设置为SqlDataSourceMode.DataSet并指定了属性FilterExpression,则会使用任何提供FilterParameters的属性计算筛选器表达式,并在操作期间Select将生成的筛选器应用于数据列表。
该方法Select委托给Select与SqlDataSource控件关联的对象的方法SqlDataSourceView。 若要执行数据检索操作,请使用SqlDataSourceViewSelectCommand文本和任何关联SelectParameters值生成对象DbCommand,然后针对基础数据库执行DbCommand该对象。