【ASP.NET Step by Step】之四 Displaying Data With the ObjectDataSource
1. ObjectDataSource
Visual studio提够了SqlDataSource,AccessDataSource,XMLDataSource,SiteMapDataSource,ObjectDataSource
ObjectDataSource是用于和对象绑定的。
基于已有的业务逻辑类ProductsBLL,建立ObjectDataSource
对象的方法映射到ObjectDataSource的Select、Insert、Update和Delete方法,把ObjectDataSource绑定到页面上的Data Web 服务器控件。
如果Data Web 服务器控件需要访问它所绑定的数据,将通过调用ObjectDataSource的Select方法来实现;然后调用会通过ObjectDataSource被发送到适当的底层对象的方法,如下图所示。
当一个GridView需要显示数据时,它调用ObjectDataSource的Select()方法,这个方法转而调用一个来自我们的业务逻辑层(BLL)的方法GetProducts,继而调用一个适当的数据访问层(DAL)的表适配器(TableAdapter)的方法,从而它发送一个SELECT查询到Northwind数据库。
2. 增加ObjectDataSource,数据源配置向导
ProdectBLL出现在这个页面,是因为我们在写业务类的时候,在类前添加了[System.ComponentModel.DataObject] 这个Attribute
同样,下一个页面出现的方法,也是因为在方法前添加了
[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select,true)]
配置向导只列出已经开发的类。如果你希望把ObjectDataSource绑定到.NET Framework里的类–例如 Membership class来存取登陆用户信息,或者Directory class 来管理文件系统信息,那么你就需要手工设置ObjectDataSource的属性
3. Themes
主题是对CSS的控件级包装。
Add a skin, GridView.skin:
<asp:GridView runat="server" CssClass="DataWebControlStyle">
<AlternatingRowStyle CssClass="AlternatingRowStyle" />
<RowStyle CssClass="RowStyle" />
<HeaderStyle CssClass="HeaderStyle" />
</asp:GridView>
一个主题可以一页一页地应用到页面,也可以应用到一个站点下的所有页面。
在Web.config的<system.web>片断里加入下面的标记,应用于站点所有页面:
<pages styleSheetTheme="DataWebControls" />
注意:DataWebControls是主题文件夹的名字
4. DetailView, FormView
FormView设置数据源,删掉自动创建<EditItemTemplate> <instertItemTemplate> ,
改写ItemTemplate
<asp:FormView ID="FormView1" runat="server" DataSourceID="ObjectDataSource1"
EnableViewState="False" AllowPaging="True">
<ItemTemplate>
<h4>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("ProductName") %>'></asp:Label>
(<asp:Label ID="Label2" runat="server" Text='<%# Eval("UnitPrice", "{0:C}") %>'></asp:Label>
)</h4>
Supplier:'<%# Eval("SupplierName") %>' Catetory:'<%# Eval("CategoryName") %>'
</ItemTemplate>
</asp:FormView>
注意绑定语法:<%# Eval("ProductName") %>
自动创建的是这种语法:
<asp:Label ID="ProductNameLabel" runat="server" Text='<%# Bind("ProductName") %>' />
出处:http://www.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。