您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 四使用ObjectDataSource展现数据
在ASP.NET2.0中操作数据之四:使用ObjectDataSource展现数据作者:heker2007字体:[增加减小]类型:转载时间:2016-04-29我要评论前面介绍搭建基础的架构,下面我们来介绍ASP.NET中,如何利用ObjectDataSource来展现数据。通过配置ObjectDataSource,我们指定这些底层的对象,还有这些对象的方法如何映射到ObjectDataSource的Select、Insert、Update和Delete方法。在完成了应用程序架构和页面的设计后,我们可以开始探讨如何实现多种多样的普通数据到报表展现的任务。前面我们已经了解到如何在从数据访问层和业务逻辑层绑定数据到ASP.NET页面上的数据控件。在ASP.NET1.x应用程序中,通过对数据控件的DataSource属性赋值然后调用控件的DataBind()方法从而实现数据展现的方式在ASP.NET2.0应用程序中可以继续使用。然而,ASP.NET2.0的数据源控件提供了一种新的方式,使用这些控件可以让你轻松从上文中创建的业务逻辑层中进行数据绑定,甚至不需要手写一行的代码。ASP.NET2.0提供了五种内置的数据源控件:SqlDataSource、AccessDataSource,、ObjectDataSource、XmlDataSource、和SiteMapDataSource,尽管如果有需要的话你还可以构建自己的自定义数据源控件(customdatasourcecontrols)。既然我们在前文中已经完成了应用程序示例的系统架构,基于已有的业务逻辑类我们将使用ObjectDataSource。图1:ASP.NET2.0包括五种内置的数据源控件ObjectDataSource充当别的对象的代理。通过配置ObjectDataSource,我们指定这些底层的对象,还有这些对象的方法如何映射到ObjectDataSource的Select、Insert、Update和Delete方法。一旦底层的对象被指定并且其方法映射到ObjectDataSource的方法后,我们就可以把ObjectDataSource绑定到页面上的DataWeb服务器控件。ASP.NET提供了许多DataWeb服务器控件,包括GridView、DetailsView、RadioButtonList和DropDownList等等。在页面的生命周期中,DataWeb服务器控件可能需要访问它所绑定的数据,这将通过调用ObjectDataSource的Select方法来实现;如果这个DataWeb服务器控件还支持插入、更新或者删除,那么将调用ObjectDataSource的Insert、Update或者Delete方法。这些调用会通过ObjectDataSource被发送到适当的底层对象的方法,如下图所示。图2:ObjectDataSource充当一个代理虽然ObjectDataSource被用来实现插入、更新或者删除数据,但暂时我们只集中讨论返回数据,以后的章节再探讨使用ObjectDataSource和DataWeb服务器控件实现数据修改。第一步:添加和配置ObjectDataSource控件首先,打开BasicReporting文件夹中的SimpleDisplay.aspx页面,切换到设计视图,从工具箱拖拽一个ObjectDataSource控件到页面。它在设计界面显示为一个灰色的方块,这是因为它不产生任何的声明标记;它仅仅是通过调用制定的对象的方法存取数据。通过ObjectDataSource返回的数据可以展现到DataWeb服务器控件,例如GridView、DetailsView、FormView等等。注意:作为另一种选择,你也可以先在页面上添加一个DataWeb服务器控件,然后“显示智能标记”,从“选择数据源”下拉框中选择〈新建数据源…〉进入数据源配置向导来添加一个ObjectDataSource。为了指定ObjectDataSource的底层对象并且把该对象的方法映射到ObjectDataSource的的方法,可以点击ObjectDataSource的智能标记中的“配置数据源”链接进入数据源配置向导。图3:点击智能标记中的“配置数据源”链接这将进入数据源配置向导。首先,我们需要给ObjectDataSource指定一个业务对象。如果勾选上“只显示数据组件”,那么下拉框中就仅仅显示出那些以[DataObject]特征修饰过的对象。当前这个列表中应该包含了类型化数据集中表适配器对象(TableAdapters)和前文中我们已经创建的业务对象。如果你忘了给业务逻辑类增加[DataObject]特征,那么当前列表中讲看不到它们。如果是那样的话,你也可以不勾选“只显示数据组件”从而看见所有对象,这就可以把业务对象包含进来(连同类型化数据集中的其他类–DataTables、DataRows等等)在第一屏中从下拉列表中选择业务对象ProductsBLL,然后点击“下一步”。图4:指定ObjectDataSource控件使用的业务对象在下一屏中向导中你可以选择ObjectDataSource要调用的方法。下拉列表中方法是从上一屏中选定的业务对象获得的。这里我们可以看到GetProductsByProductID,GetProducts,GetProductsByCategoryID和GetProductsBySupplierID这几个方法。从下拉列表中选择方法GetProducts然后点击“完成”(如果你已经像前文展示那样给ProductBLL的方法增加了[DataObjectMethod]特征,那么该项会被默认选中)。图5:从“Select”Tab页选择返回数据的方法手工配置ObjectDataSourceObjectDataSource配置向导提供了一个快捷的方式来指定它使用的对象并关联需要调用的方法。不过,你也可以通过它的属性来配置ObjectDataSource,不管是通过属性窗口还是直接在声明标记里。只需简单地将TypeName属性设置为使用的业务对象的名称,将SelectMethod属性设置为提取数据时需要调用的方法名称。?1234567asp:ObjectDataSourceID=ObjectDataSource1runat=serverSelectMethod=GetProductsTypeName=ProductsBLL/asp:ObjectDataSource尽管你可能更喜欢数据源配置向导,但有时你还是需要手工配置ObjectDataSource,因为配置向导只列出已经开发的类。如果你希望把ObjectDataSource绑定到.NETFramework里的类–例如Membershipclass来存取登陆用户信息,或者Directoryclass来管理文件系统信息,那么你就需要手工设置ObjectDataSource的属性。第二步:添加一个DataWeb服务器控件并将它绑定到ObjectDataSource在ObjectDataSource添加到页面并完成配置之后,我们就可以添加一个DataWeb服务器控件到页面来展现通过ObjectDataSource的Select方法返回的数据。所有的DataWeb服务器控件都可以绑定到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水平居中显示。?12345678asp:GridViewID=GridView1runat=serverAutoGenerateColumns=FalseDataKeyNames=ProductIDDataSourceID=ObjectDataSource1EnableViewState=FalseColumnsasp:BoundFieldDataField=ProductNameHeaderText=ProductSortExpression=ProductName/asp:BoundFieldDataField=CategoryNameHeaderText=CategoryReadOnly=TrueSortExpression=CategoryName/asp:BoundFieldDataField=SupplierNameHeaderText=SupplierReadOnly=TrueSortExpression=SupplierName/asp:BoundFieldDataField=UnitPriceDataFormatString={0:c}HeaderText=Price9101112131415161718192021222324252627HtmlEncode=FalseSortExpression=UnitPriceItemStyleHorizontalAlign=Right//asp:BoundFieldasp:CheckBoxFieldDataField=DiscontinuedHeaderText=DiscontinuedSortExpression=DiscontinuedItemStyleHorizontalAlign=Center//asp:CheckBoxField/Columns/asp:GridView图8:GridView控件的绑定列定制完成使用主题(Themes)保持显示风格的一致这里会尽可能地移除控件层面的样式设置,取而代之的是使用在一个外部文件里定义的级联样式表。文件Styles.css包含了DataWebControlStyle、HeaderStyle、RowStyle和AlternatingRowStyle这几种CSS样式可以用来指示DataWeb服务器控件的外观。为了实现这一点,我们可以设置GridView控件的CssClass属性为DataWebControlStyle,HeaderStyle、RowStyle和AlternatingRowStyle的CssClass属性也类似地设置。如果我们设置了这些CssClass属性到Web控件,那么我
本文标题:四使用ObjectDataSource展现数据
链接地址:https://www.777doc.com/doc-2546574 .html