Fire my passion

Anything with my most passion……
ObjectDataSource的使用
昨天研究了一下ObjectDataSource,之前只是大概知道这个数据源控件如何用,但是并未真正使用过。后来才发现有很多需要注意的地方。

首先,需要指定ObjectDataSource的TypeName和SelectMethod两个属性。第一个属性指定返回数据的类,第二个是返回数据的方法。但是如果返回数据类是在Dll中而不是App_Code中的话,就需要指定它的全名:namespace.class,这个问题困扰了我很长时间。需要注意的还有,SelectMethod方法返回值必须是IEnumerable、DataTable、DataSet、DataView中的其中一种,而且IEnumerable是不能进行排序的( 这个问题还没解决)。如果返回的是业务数据类型,则还需设置DataObjectTypeName属性的值,以进行数据绑定。类的属性名映射DataBound控件的DataField

然后,如果指定的SelectMethod方法如果需要传入参数,还需要给ObjectDataSource指定参数,可以是<asp:Parameter>或者是其他。如果是其他的参数类型的话,比如SessionParameter,就不必在设置其值,但是如果只是普通的参数类型,还需要指定它的DefaultValue,或者在Selecting事件中对e.InputParameter进行指定才行。在此在说明一下select,insert,update,delete四种操作都有两个事件,即-ing,-ed两种,前者是在更新之前做一些操作,比如更改参数的值,前面已经提到;后者可以在数据返回时,对返回类型参数进行一些处理(direction="ReturnValue")

最后,再让我陷入困境的问题是:如果是进行更新、插入、删除的话,在方法中添加参数自然不用说,可是参数的值是如何传入到方法中的呢?经过一阵思考,总结出结论:如果在DataBound控件中指定列的类型为BoundField的话,在更新时自动传回方法,在TemplateField中如果使用<%#Bind("")%>进行绑定也可以将值传回;在删除时,需要指定DataBound控件的DataKeyNames的值,这个值是数据的关键域的名称;插入时(GridView不具备这个功能,需要DetailsView实现)不需任何其他的设置便可以完成

posted on 2007-12-28 12:51  everx  阅读(303)  评论(0编辑  收藏  举报