---------------------------------------------------------------------------
[System.ComponentModel.DataObject]
//类上面加上了DataObject 标签(就是在类声明语句的上面的[System.ComponentModel.DataObject]),DataObject标签把这个类标记为可以绑定到一个ObjectDataSource控件。。。

[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, true)]
//把这个方法标记为可以绑定到一个ObjectDataSource控件。。。
---------------------------------------------------------------------------
点击ObjectDataSource的智能标记中的“配置数据源”链接进入数据源配置向导。 这将进入数据源配置向导。首先,我们需要给ObjectDataSource指定一个业务对象。如果勾选上“只显示数据组件”,那么下拉框中就仅仅显示出那些以[DataObject]特征修饰过的对象。当前这个列表中应该包含了类型化数据集中表适配器对象(TableAdapters)和前文中我们已经创建的业务对象。如果你忘了给业务逻辑类增加[DataObject]特征,那么当前列表中讲看不到它们。如果是那样的话,你也可以不勾选“只显示数据组件”从而看见所有对象,这就可以把业务对象包含进来(连同类型化数据集中的其他类 –DataTables、 DataRows等等)

在下一屏中向导中你可以选择ObjectDataSource要调用的方法。下拉列表中方法是从上一屏中选定的业务对象获得的。如果你已经给BLL层的数据逻辑方法使用了[DataObjectMethod]特征,那么该方法就会出现在下拉列表筐中)。
 ------------------------------------------------------------------------------

手工配置ObjectDataSource

ObjectDataSource配置向导提供了一个快捷的方式来指定它使用的对象并关联需要调用的方法。不过,你也可以通过它的属性来配置ObjectDataSource,不管是通过属性窗口还是直接在声明标记里。只需简单地将TypeName属性设置为使用的业务对象的名称,将SelectMethod属性设置为提取数据时需要调用的方法名称。

 

 1<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
 2
 3        SelectMethod="GetProducts"
 4
 5        TypeName="ProductsBLL">
 6
 7</asp:ObjectDataSource>
 8
 9 
10

 

尽管你可能更喜欢数据源配置向导,但有时你还是需要手工配置ObjectDataSource,因为配置向导只列出已经开发的类。如果你希望把ObjectDataSource绑定到.NET Framework里的类例如 Membership class来存取登陆用户信息,或者Directory class 来管理文件系统信息,那么你就需要手工设置ObjectDataSource的属性。

------------------------------------------------------------------------------
设置Web控件的属性作为参数源

有的BLL层中申明的方法是带参数的查询。。如果我们要使用ObjectDataSource来进行查询。必须要获得用户输入的参数值。。
在配置数据源向导第一屏选择BLL层中的类 。第二屏,选择类中的一个带参数方法
向导再次显示最后一屏,让你选择参数的值。这一次,设置参数源为Control,这时会出现一个ControlID下拉列表,列表中包含页面上所有控件的名称;从中选择CountryName控件。由于第一次访问本页面时文本框CountryName会为空白,那么就没有值从它返回,也就不显示任何数据。如果你希望默认显示一些结果,那么要在DefaultValue文本框里输入一个默认的参数值。

 1<asp:ObjectDataSource ID="ObjectDataSource2" runat="server"
 2
 3    SelectMethod="GetSuppliersByCountry" TypeName="SuppliersBLL">
 4
 5    <SelectParameters>
 6
 7        <asp:ControlParameter ControlID="CountryName" Name="country" PropertyName="Text"
 8
 9            Type="String" />
10
11    </SelectParameters>
12
13</asp:ObjectDataSource>
14

------------------------------------------------------------------------------
编程设置ObjectDataSource的参数值

在配置数据源向导第一屏选择BLL层中的类 。第二屏,选择类中的一个带参数方法
最后一屏要求我们给方法的参数提供参数源。既然我们将编码设置这个值,就让参数源维持它的默认选项None,点击“完成”。

这将在ObjectDataSourceSelectParameters集合里创建一个未指定参数值的Parameter对象。

 1<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OldValuesParameterFormatString="original_{0}"
 2
 3    SelectMethod="GetEmployeesByHiredDateMonth" TypeName="EmployeesBLL">
 4
 5    <SelectParameters>
 6
 7        <asp:Parameter Name="month" Type="Int32" />
 8
 9    </SelectParameters>
10
11</asp:ObjectDataSource>
12

要编码设置这个参数值,我们需要给ObjectDataSourceSelecting事件添加一个事件委托。为了实现这一点,到设计视图里在ObjectDataSource上双击。另一种方式是选中ObjectDataSource在属性窗口里点击黄色闪电小图标,然后,直接在Selecting这一栏里双击或者输入一个你要使用的事件委托的名称。
1protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
2
3{
4
5    e.InputParameters["参数名"= 值;
6
7}

8