Default.aspx没有Code Behind代码,纯粹是用asp.net 2.0的控件和NBearDataSource来CRUD。页面Default.aspx的运行效果就是,GridView可以RUD,DetailsView中可以C。<%@ Page Language="C#" %> <%@ 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</title> </head> <body> <form id="aspnetForm" runat="server"> <nb:NBearDataSource ID="TestDS" runat="server" ConnectionStringName="test access db" TypeName="Entities.SimpleData" FilterExpression="{SimpleID} > 0" DefaultOrderByExpression="{SimpleID} DESC, {SimpleName}" /> <asp:GridView ID="TestGrid" runat="server" DataSourceID="TestDS" AllowSorting="true" AllowPaging="true" PageSize="3" AutoGenerateEditButton="true" AutoGenerateDeleteButton="true" /> <br /> <asp:DetailsView ID="TestDetail" runat="server" DataSourceID="TestDS" DefaultMode="Insert" AutoGenerateInsertButton="true" AutoGenerateRows="false"> <Fields><asp:BoundField DataField="SimpleName" HeaderText="Name" /></Fields> </asp:DetailsView> </form> </body> </html>
第二个页面StrongTypeQuerySample.aspx
该页面包含了一个简单的GridView和NBearDataSource和一组用于可视化查询的textbox和dropdownlist控件。<%@ Page Language="C#" AutoEventWireup="true" CodeFile="StrongTypeQuerySample.aspx.cs" Inherits="StrongTypeQuerySample" %> <%@ 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 - Strong Type Query Sample</title> </head> <body> <form id="form1" runat="server"> Name to Query: <asp:TextBox ID="txtName" runat="server"></asp:TextBox> (* as wild char) Order By: <asp:DropDownList ID="listOrderByProperty" runat="server"> <asp:ListItem Selected="True" Text="SimpleId" Value="SimpleId"></asp:ListItem> <asp:ListItem Text="SimpleName" Value="SimpleName"></asp:ListItem> </asp:DropDownList> <asp:DropDownList ID="listOrderByDesc" runat="server"> <asp:ListItem Selected="True" Text="ASC" Value="ASC"></asp:ListItem> <asp:ListItem Text="DESC" Value="DESC"></asp:ListItem> </asp:DropDownList> <asp:Button ID="btnFind" runat="server" Text="Find" OnClick="btnFind_Click" /><br /> <br /> <nb:NBearDataSource ID="TestDS" runat="server" ConnectionStringName="test access db" TypeName="Entities.SimpleData" /> <asp:GridView ID="TestGrid" runat="server" DataSourceID="TestDS" /> </form> <hr /> <a href="Default.aspx">Back to Default</a> </body> </html>
StrongTypeQuerySample.aspx.cs
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class StrongTypeQuerySample : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnFind_Click(object sender, EventArgs e) { string name = txtName.Text.Replace("*", "%"); if (!string.IsNullOrEmpty(name)) { TestDS.Filter(Entities.SimpleData._.SimpleName.Like(name)); } if (listOrderByProperty.SelectedValue == "SimpleId") { if (listOrderByDesc.SelectedIndex == 0) { TestDS.OrderBy(Entities.SimpleData._.SimpleId.Asc); } else { TestDS.OrderBy(Entities.SimpleData._.SimpleId.Desc); } } else if (listOrderByProperty.SelectedValue == "SimpleName") { if (listOrderByDesc.SelectedIndex == 0) { TestDS.OrderBy(Entities.SimpleData._.SimpleName.Asc); } else { TestDS.OrderBy(Entities.SimpleData._.SimpleName.Desc); } } } }
在btnFind按钮的Click事件中,我们根据用户输入的查询条件和排序条件,使用NBearDataSource的Filter(WhereClip)和OrderBy(OrderByClip)方法进行动态查询。
注意,这两个方法个接收一个参数WhereClip/OrderByClip,它是nbear支持的强类型查询表达式参数。如示例中所示,我们可以方便的使用NBear支持的强类型查询语法指定查询条件和排序条件,如这里的line 24和line30。