日期:2010-09-29  浏览次数:20397 次

  当使用SqlDataSource控件选择数据时,可以从两个属性:ConnectionString和SelectCommand开始,如下所示:

<asp:SqlDataSource ID="MySourceControlName" Runat="server"
ConnectionString="Server=MyServer ;
Database=Northwind"
SelectCommand=" SELECT Fieldl, [Field With Space] FROM MyTable">
</asp:SglDataSource>

  当使用Windows认证时,可以添加两个认证数据。

<asp:SqlDataSource ID="MySourceControlName" Runat="server"
ConnectionString="
Server=MyServer ;
User ID=MyID;
Password=Mypass;
Database=Northwind"
SelectCommand=" SELECT Field1, [Field With Space] FROM MyTable">
</asp:SqlDataSource>

  第一个是前面讨论过的连接字符串,第二个是SelectCommand,用来确定将从SQL Server数据库中提取什么信息。在SelectCommand中,可以使用任何符合语法的SQL SELECT语句,包括在上一章或者附录A中讨论的语句。很多SQL Server管理员都不会允许用户直接访问表。数据库管理员将会在SPROC上创建一些受限制的许可。或者,创建表的视图用来提供表的一部分数据或者对表中可以修改的数据进行限制。连接至视图的语法如下:

SelectCommand="SELECT * from MyView">

  如果表、查询、SPROC或者视图的名称中有空格字符,则应当使用方括号将整个名称包含起来,如下所示:

SelectCommand="SELECT * from [My View] "

  您可能已经注意到了GridView中的Filter属性并且想知道它与在数据源SelectCommand中使用WHERE子句之间有何不同。筛选只用于某些缓冲情况,我们将会在第15章中介绍。

  有了连接字符串和SelectCommand,就可以创建从SQL Server使用数据的页面了。

  试一试#1—— SqlDataSource简单示例

  在本练习中,应该以网格(表)格式从Northwind的SQL版本显示产品的GridView。可以以添加DataSource控件和数据绑定控件的技术开始,这样就能够创建最简单的源代码。然后将会使用一种更快速的开发技术(拖放列名称)。

  (1) 请确认已经安装了SSE(如第1章所述),包括样本数据库Northwind。本练习还将涉及到SQL Server或者MSDE。

  (2) 创建文件夹ch03,在其中创建一个名为TIO-1-SqlSimple-1.ASPX的文件。通过Menu:View|Toolbox(Ctrl+Alt+X)显示工具箱。请注意工具箱有一个可以展开的Data区域。

  (3) 在Design视图中,从工具箱的Data区域中拖放一个SqlDataSource控件至页面。在便捷任务面板上,将数据源配置为新的连接。输入服务器名称(local)\SQLExpress并使用Windows NT认证。选择名为Northwind的数据库并测试连接。单击OK结束。您将会自动返回至Data Source Configuration对话框,单击Next。对本例来说,不需要在配置文件中保存连接字符串;单击Next。选择“Specify columns from a table”并选择表名Products。在Columns列表中,单击ID、Name和Unit Price。单击Next和Test Query,然后单击Finish。这样就完成添加DataSource控件了。

  (4) 添加GridView数据绑定控件。在便捷任务面板中,选择SqlDataSource,然后关闭便捷任务面板。这样就创建了数据绑定控件。保存并运行页面,页面如下:

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtmlll/DTD/xhtmlll.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Ch03-Tio#l-SqlSimple-verl</title>
</head>
<body>
<h2>
Chapter 3 TIO #1 SqlSimple verl
</h2>
<form id="forml" runat="server">
<div>
<asp:SqlDataSource ID="SqlDataSourcel" Runat="server"
ProviderName="System.Data.SqlClient"
ConnectionString="Server=(local)\SQLExpress;
Integrated Security=True;
Database=Northwind;
Persist Security Info=True"
SelectCommand="SELECT [ProductID], [ProductName], [UnitPrice] FROM[Products]">
</asp:SqlDataSource>
<asp:GridView ID="GridViewl" Runat="server"
DataSourceID="SqlDataSourcel"
DataKeyNames="ProductID"
AutoGenerateColumns="False">
<Columns>
<asp:BoundField ReadOnly="True" HeaderText="ProductID"
InsertVisible="False" DataField="ProductID"
SortExpression=" ProductID" ></asp: BoundField>
<asp:BoundField HeaderText="ProductName"DataField="ProductName"
SortExpression="ProductName"></asp:BoundField>
<asp:BoundField HeaderText="UnitPrice" DataField="UnitPrice"
SortExpression="UnitPrice"></asp:BoundField>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>

  (5) 关闭浏览器并查看一下Source视图中的页面。请注意,在页面的<form>中间有两个控件。SqlDataSource有ConnectionString和SelectCommand。GridView具有一些与SqlDataSource控件的字段绑定的列。

  (6) 现在可以使用快速的技术添加第二个表了。将页面保存为TIO-1-SqlSim- ple-2.ASPX。切换至Design视图。在菜单中,依次单击View->Database Explorer。在Data Connections上单击右键并选择Add Connection。与上一步骤一样,您将面对连接属性对话框。输入服务器名称(local)\SQLExpress,使用Windows NT安全,并选择名为Northwind的数据库。测试连接并单击OK以关闭对话框。请注意在数据库浏览窗口中的新项目。

  (7) 展开新的(local)\SqlExpress.Northwind.dbo连接,然后展开它的表。展开Categories表。使用Ctrl+单击的方式选择CategoryID、CategoryN