扫描二维码关注

首页 APP开发小程序开发 微信公众号 网站建设 推广运营 关于我们

“学习不仅是掌握知识”

向书本学习,还要向实践学习、向生活学习。消化已有知识,
而且要力求有所发现、有所发明、有所创造

ASP.NET 2.0 中的数据源控件(二)

2019/3/25 9:28:55

ASP.NET 2.0 中的数据源控件(二)

SqlDataSource 示例


既然我已经完成了概述,那么我将对使用 SqlDataSource 和 ObjectDataSource 来检索和修改数据进行一下对比。SqlDataSource 控件(它使用 ADO.NET 2.0 DbProviderFactory 对象)具有将它直接链接到 OLE DB 或 ODBC 数据源的属性。当加载包含链接到 SqlDataSource 的数据绑定控件的 ASP.NET 页时,SqlDataSource 直接与基础数据库进行通信。因而,SqlDataSourceData 源控件不与现有的业务对象集成。

为了查看 SqlDataSource 是如何操作的,让我们先观察一下 Orders_SDS.aspx 页。有一个 DropDownList 控件,它绑定到一个从 Northwind 数据库中检索客户列表的 SqlDataSource 源控件。


还有另外一个名为 sdsOrdrsDataSource 的 SqlDataSource,它用于检索选定客户的所有订单显示了两个 SqlDataSource 控件和这个 DropDownList。请注意,sdsOrdersDataSource SqlDataSource 控件使用 DropDownList 的选定值作为其存储过程的参数(prGet_Orders 的参数)。

ProviderName 和 ConnectionString 属性的组合告诉 SqlDataSource 控件从哪个数据存储中获得数据。尽管这些属性使 SqlDataSource 成为检索和修改数据的简单解决方案,但遗憾的是,它们在表示层的 ASPX 文件中公开了数据库连接字符串以及 SQL 语句或存储过程。这通常不是一个好主意。将该数据以加密形式存储在配置储存库(如配置文件或注册表)中要安全得多。

图 4 显示了编辑模式下的 Orders_SDS.aspx 页。分页由 GridView 自动实现(通过将 GridView AllowPaging 属性设置为 true,并将 PageSize 属性设置为期望的大小,)。这将告诉网格将其中的行分页,并且在“下一页”或“上一页”链接被单击时自动重新加载网格和页。GridView 使用 TextBox 控件显示选定行的可编辑列。数据绑定列是通过 asp:BoundField 或 TemplateField 元素定义的。通过设置 DataField 属性,可以将 BoundField 绑定到 GridView 的关联数据源:

<asp:BoundField HeaderText="ShipCity" DataField="ShipCity"
    SortExpression="ShipCity"></asp:BoundField>
这将告诉 GridView 控件,当它处于查看模式时,应该在 span 元素中显示 ShipCity 值。当 GridView 处于编辑模式时,选定行中的这一列将在适当的 HTML 元素中显示。在这种情况下,HTML 元素为 TextBox,因为它是一个字符串值。该元素是基于绑定列的数据类型选择的。例如,如果该列在 SQL Server 中被定义为位,则将使用 CheckBox 控件在编辑模式下显示该列。

TemplateField 元素在绑定列的行为方式方面提供了更大的灵活性。请观察以下摘自 Orders_SDS.aspx 页的代码示例:

<asp:TemplateField SortExpression="OrderDate" HeaderText="OrderDate">
    <ItemTemplate>
        <asp:Label ID="lblOrderDate_Item" Runat="server"
            Text=''<%# Bind("OrderDate", "{0:d}") %>''></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox ID="txtOrderDate_Edit" Runat="server"
            Text=''<%# Bind("OrderDate", "{0:d}") %>''></asp:TextBox>
    </EditItemTemplate>
</asp:TemplateField>
 
当 GridView 处于查看模式时,它使用 TemplateColumn 在 Label 控件中显示 OrderDate 列;当 GridView 处于编辑模式时,它使用 TemplateColumn 在 TextBox 控件中显示 OrderDate 列。您还可以使用 FooterTemplate 来告诉 Template 列在页脚中以不同的方式显示该列。还可以使用 HeaderTemplate、AlternatingItemTemplate 甚至 InsertItemTemplate。还请注意 ASP.NET 2.0 中引入的简化的绑定语法。OrderDate 的值是通过调用 Bind 表达式并向它传递 GridView 的关联数据源中列的名称和一个可选的数据格式字符串表达式来设置的。在该示例中,我使用了表示短日期的数据格式字符串。这些属性都可以通过可借助于 Visual Studio 2005 中的新增智能标记功能访问的属性来轻松设置。

ObjectDataSource
GridView 和其他数据绑定控件的最出色的功能之一是,在设置了它们以后,只需更改单个属性,就可以将它们绑定到 ObjectDataSource 控件


长沙高新开发区谷苑路186号湖南大学科技园创业大厦429

咨询电话:0731-8225 2399
业务QQ:1020299919
大客户专线:139 7581 8321

友情链接:
Copyright© 2014-2024 湖南省鑫冠计算机系统有限公司 版权所有 ICP备案号:湘ICP备17013418号-1 公安备案号:湘公网安备43019002001544号