ASP.NET 2.0数据教程之四:使用ObjectDataSource展现数据
[2] ASP.NET 2.0数据教程之四:使用ObjectDataSource展现数据
[3] ASP.NET 2.0数据教程之四:使用ObjectDataSource展现数据
[4] ASP.NET 2.0数据教程之四:使用ObjectDataSource展现数据
[5] ASP.NET 2.0数据教程之四:使用ObjectDataSource展现数据
[6] ASP.NET 2.0数据教程之四:使用ObjectDataSource展现数据
[7] ASP.NET 2.0数据教程之四:使用ObjectDataSource展现数据
[8] ASP.NET 2.0数据教程之四:使用ObjectDataSource展现数据
[9] ASP.NET 2.0数据教程之四:使用ObjectDataSource展现数据
[10] ASP.NET 2.0数据教程之四:使用ObjectDataSource展现数据
[11] ASP.NET 2.0数据教程之四:使用ObjectDataSource展现数据
[12] ASP.NET 2.0数据教程之四:使用ObjectDataSource展现数据
[13] ASP.NET 2.0数据教程之四:使用ObjectDataSource展现数据
系列文章导航:
ASP.NET 2.0数据教程之四:使用ObjectDataSource展现数据
ASP.NET 2.0数据教程之六:编程设置ObjectDataSource的参数值
ASP.NET 2.0数据教程之七:使用DropDownList过滤的主/从报表
ASP.NET 2.0数据教程之八:使用两个DropDownList过滤的主/从报表
ASP.NET 2.0数据教程之十:使用 GridView 和DetailView实现的主/从报表
ASP.NET 2.0数据教程之十一:基于数据的自定义格式化
ASP.NET 2.0数据教程之十二:在GridView控件中使用TemplateField
一种更灵活的排版用作每次显示一条记录
使用DetailView展现ObjectDataSource返回的每一条数据显得有些呆板。我们可能会需要更灵活的数据展现方式。例如,在每一个单独的行里,在显示product’s name, category, supplier, price, 和 discontinued information这些信息的基础上,我们可能需要product name 和 price两列显示<h4>的列头,而category 和 supplier则以较小的字体显示在name和price下方。另外,我们也许不太在意属性名(Product, Category,等等)显示在属性值后面。
FormView控件提供了这个层面的用户化定制。在使用字段的基础上(像GridView 和 DetailsView那样),FormView控件使用模版,这可以让我们混合使用Web服务器控件,静态的HTML和绑定语法(databinding syntax)。如果你熟悉ASP.NET 1.x中的Repeater控件,你可以认为FormView是只显示一条记录的Repeater 。
在页面SimpleDisplay.aspx的设计界面添加一个FormView控件。一开始FromView控件显示为一个灰色的方块,并告知我们需要编辑模版内容,需要使用ItemTemplate 。
图 17: FormView必须包含一个ItemTemplate
你可以通过FormView的智能标记直接给它绑定一个数据源控件,这将自动创建一个默认的ItemTemplate(如果ObjectDataSource设置了InsertMethod 和 UpdateMethod,那么同时也会自动创建EditItemTemplate 和 InsertItemTemplate)。不过,这里的示例我们将手工绑定FormView并设置其ItemTemplate 。首先,设置FormView的DataSourceID属性为ObjectDataSource的ID: ObjectDataSource1,然后,创建ItemTemplate,在一个<h4>里显示product’s name 和 price,category 和 supplier则以较小的字体显示在下方。
<asp:FormView ID="FormView1" runat="server" DataSourceID="ObjectDataSource1" EnableViewState="False">
<ItemTemplate>
<h4><%# Eval("ProductName") %> (<%# Eval("UnitPrice", "{0:c}") %>)</h4>
Category: <%# Eval("CategoryName") %>; Supplier: <%# Eval("SupplierName") %>
</ItemTemplate>
</asp:FormView>
图 18: 第一个产品 (Chai) 显示为预定的格式
<%# Eval(propertyName) %>是绑定语法。方法Eval返回绑定到FormView的对象的指定属性的值。查阅Alex Homer的文章Simplified and Extended Data Binding Syntax in ASP.NET 2.0获取更多的关于数据绑定的细节。
跟DetailsView一样,FormView置显示ObjectDataSource返回的第一条记录。你可以启用FormView的分页功能,从而让访问者可以依次查看每个产品。
总结
有赖于ASP.NET 2.0的ObjectDataSource控件,我们可以方便地完成从业务逻辑层获取和展现数据而不需要写一行代码。OjbectDataSource调用指定的类的方法并且返回结果。这些结果可以展现在绑定了ObjectDataSource的Data Web服务器控件。本章节我们看了如何绑定到GridView、DetailsView、和FormView 控件到ObjectDataSource 。
到目前为止我们仅仅看了如何使用OjbectDataSource调用一个没有参数的方法,但如果我们想调用一个需要传入多个参数的方法,例如类ProductBLL里的GetProductsByCategoryID(categoryID)方法呢?为了调用需要传入一个或多个参数的方法,我们需要配置ObjectDataSource指定这些参数的值。在下一章中我们来看看如何实现。
祝编程快乐!
附加读物
想了解跟在本教程中讨论过的技术内容相关的更多的信息,请参考下列资源:
· Create Your Own Data Source Controls
· GridView Examples for ASP.NET 2.0
· Simplified and Extended Data Binding Syntax in ASP.NET 2.0
· Server-Side Styles Using Themes
· How To: Apply ASP.NET Themes Programmatically
作者简介
Scott Mitchell,著有六本ASP/ASP.NET方面的书,是4GuysFromRolla.com的创始人,自1998年以来一直应用微软Web技术。Scott是个独立的技 术咨询顾问,培训师,作家,最近完成了将由Sams出版社出版的新作,24小时内精通ASP.NET 2.0。他的联系电邮为mitchell@4guysfromrolla.com,也可以通过他的博客http://ScottOnWriting.NET与他联系。