1、ConnectionStringName - Web.config中的connstr设置的name,可以不指定,不指定的话,默认对应web.config中的所有constr中的最后一个,类似NBear中的Gateway.Default对应最后一个connstr设置。
2、TypeName - 该DataSource承载的实体类型完整名称,必须设置。
3、FilterExpression和DefaultOrderByExpression - 可选的自定义查询条件和排序条件。{XX}表示一个实体的属性名称,NBear会在运行时将属性对应到相应的数据库字段,其他语法和sql一致。
4、Filter(WhereClip where)和OrderBy(OrderByClip orderBy)方法 - 可以运行时调用的方法,参数是nbear的强类型查询/排序表达式,调用这两个方法后,强类型表达式的值会覆盖FilterExpression和DefaultOrderByExpression属性的值。
5、Saving/Saved事件 - 这两个事件会在Insert或Update的前后被调用,并允许用户操作Save过程中的实体。
关于GridView和Repeater(DataList)如何使用NBearDataSource提供的分页支持
1、对于GridView,只需设定其PageSize、PageIndex属性即可。
2、对于Repeater(DataList)控件,只需要设置其Repeater.SelectArguments.StartRowIndex和MaximumRows属性,指定当前绑定第几页,每页页数等参数即可。不过注意Repeater的SelectArguments属性是一个protected属性,所以,可能需要继承一个自定义的Repeater,并暴露可以修改Repeater.SelectArguments的接口。
例如,如果希望绑定第5页,每页10条记录,只需要设置StartRowIndex=(5-1)*10=40, MaximumRows=10 (也就是每页记录数)。
内部实现
当指定分页信息时NBearDataSource会在内部使用Gateway.GetPageSelector().FindPage()进行数据库级别的分页查询;
如果没有指定分页信息,则NBearDataSource内部会通过Gateway.FindArray()方法进行查询,并返回所有记录。
NBearV3.6.3新增PagableRepeater控件,也就是扩展了PageSize和PageIndex属性的Repeater控件,可以直接使用该控件结合任意的支持分页的DataSource绑定某一页数据。下面是一个使用使用了这个扩展的PagableRepeater控件的示例:
PagableRepeaterSample.aspx
Line14-16使用了PagableRepeater控件,可以看到只需要指定PageSize和PageIndex属性就行,使用非常简单。虽然这里PagableRepeater控件使用了NBearDataSource作为数据源,但实际上,也可以使用别的DataSource,只需要DataSource支持基于SelectArguments的自定义分页,比如SqlDataSource。<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PagableRepeaterSample.aspx.cs" Inherits="PagableRepeaterSample" %> <%@ Register TagPrefix="nb" Namespace="NBear.Web.Data" Assembly="NBear.Web.Data" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>NBear DataSource Test - Pagable Repeater Sample</title> </head> <body> <form id="form1" runat="server"> <nb:NBearDataSource ID="TestDS" runat="server" ConnectionStringName="test access db" TypeName="Entities.SimpleData" DefaultOrderByExpression="{SimpleId} DESC" /> <nb:PagableRepeater ID="rpPagable" runat="server" PageIndex="2" PageSize="3" DataSourceID="TestDS"> <ItemTemplate>SimpleId=<%# Eval("SimpleId") %>, SimpleName=<%# Eval("SimpleName") %><br /></ItemTemplate> </nb:PagableRepeater> </form> <hr /> <a href="Default.aspx">Back to Default</a><br /> <a href="StrongTypeQuerySample.aspx">Strong Type Query Sample</a> </body> </html>