ObjectDataSource配置向导提供了一个快捷的方式来指定它使用的对象并关联需要调用的方法。不过,你也可以通过它的属性来配置ObjectDataSource,不管是通过属性窗口还是直接在声明标记里。只需简单地将TypeName属性设置为使用的业务对象的名称,将SelectMethod属性设置为提取数据时需要调用的方法名称。
<asp:ObjectDataSource runat="server" SelectMethod="GetProducts" TypeName="ProductsBLL"> </asp:ObjectDataSource>
尽管你可能更喜欢数据源配置向导,但有时你还是需要手工配置ObjectDataSource,因为配置向导只列出已经开发的类。如果你希望把ObjectDataSource绑定到.NET Framework里的类–例如 Membership class来存取登陆用户信息,或者Directory class 来管理文件系统信息,那么你就需要手工设置ObjectDataSource的属性。
第二步:添加一个Data Web服务器控件并将它绑定到ObjectDataSource
在ObjectDataSource添加到页面并完成配置之后,我们就可以添加一个Data Web服务器控件到页面来展现通过ObjectDataSource的Select方法返回的数据。所有的Data Web服务器控件都可以绑定到ObjectDataSource;下面我们看看如何将ObjectDataSource的数据展现到GridView、DetailsView、和 FormView 。
绑定一个GridView到ObjectDataSource
从工具箱添加一个GridView控件到页面SimpleDisplay.aspx的设计界面。从GridView的智能标记,选择我们在第一步中添加的ObjectDataSource控件作为数据源。这将根据ObjectDataSource的Select方法所返回数据的每一个属性(即类型化数据集Products所定义的属性)自动地在GridView控件里产生一个绑定列(BoundField)。
图6: 添加一个GridView控件到页面并绑定到ObjectDataSource
图7: 通过编辑列对话框管理GridView控件的绑定列
花一些时间修改GridView控件的绑定列,移除ProductID, SupplierID, CategoryID, QuantityPerUnit, UnitsInStock, UnitsOnOrder, 和 ReorderLevel这几列。操作很简单,从左下方的列表中选中这些列然后点击删除按钮(红色交叉)就可以移除它们。然后,重新排列一下,选中CategoryName 和 SupplierName两个绑定列并点击向上箭头按钮,使它们排放在UnitPrice列之前。分别设置Products、Category、Supplier和 Price这几个剩下的绑定列的HeaderText属性。然后,格式化Price列为货币–设置该绑定列的HtmlEncode属性为False并且设置DataFormatString属性为{0:c} 。最后,通过ItemStyle/HorizontalAlign属性设置绑定列Price的水平靠右对齐以及CheckBox列Discontinued水平居中显示。
<asp:GridView runat="server" AutoGenerateColumns="False" DataKeyNames="ProductID" DataSourceID="ObjectDataSource1" EnableViewState="False"> <Columns> <asp:BoundField DataField="ProductName" HeaderText="Product" SortExpression="ProductName" /> <asp:BoundField DataField="CategoryName" HeaderText="Category" ReadOnly="True" SortExpression="CategoryName" /> <asp:BoundField DataField="SupplierName" HeaderText="Supplier" ReadOnly="True" SortExpression="SupplierName" /> <asp:BoundField DataField="UnitPrice" DataFormatString="{0:c}" HeaderText="Price" HtmlEncode="False" SortExpression="UnitPrice"> <ItemStyle HorizontalAlign="Right" /> </asp:BoundField> <asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued" SortExpression="Discontinued"> <ItemStyle HorizontalAlign="Center" /> </asp:CheckBoxField> </Columns> </asp:GridView>
图 8: GridView控件的绑定列定制完成
使用主题(Themes)保持显示风格的一致