stand on the shoulders of giants

【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需要显示数据时,它调用ObjectDataSourceSelect()方法,这个方法转而调用一个来自我们的业务逻辑层(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") %>' />

posted @ 2008-12-01 14:11  DylanWind  阅读(200)  评论(0编辑  收藏  举报