表示层
Code
<%@ Page ClientTarget="DownLevel"%>
<%@ Import Namespace="BusinessLayer" %>
<html>
<script language="C#" runat="server">
public void Page_Load(Object sender, EventArgs E)
{
if (!IsPostBack)
{
BusObj bus = new BusObj();
Categories.DataSource = bus.GetCategories();
Categories.DataBind();
}
}
public void Submit_Click(Object sender, EventArgs E)
{
if (Page.IsValid)
{
int id = 0;
if (CustomerId.Text != "")
id = Int32.Parse(CustomerId.Text);
BusObj bus = new BusObj();
Products.DataSource = bus.GetProductsForCategory(Categories.SelectedItem.Value,id);
}
Products.DataBind();
}
</script>
<body style="font: 10pt verdana" bgcolor="ffffcc">
<!-- #include File="C:\Inetpub\wwwroot\DotNetJunkies\DotNetJunkiesWeb\_js\omni.inc" -->
<form runat="server">
<h3>A Simple Three-Tier Web Form</h3>
Select a Category:
<ASP:DropDownList id="Categories" DataValueField="CategoryName" runat="server"/>
Preferred Customer ID:
<ASP:TextBox id="CustomerId" Width="35" runat="server"/>
<input type="Submit" OnServerClick="Submit_Click" Value="Get Products" runat="server"/>
<asp:RegularExpressionValidator id="RegExValidator"
ControlToValidate="CustomerId"
ValidationExpression="[0-9]{2}"
Display="Dynamic"
Font-Name="verdana" Font-Size="10"
runat=server>
Customer ID must be two numeric digits
</asp:RegularExpressionValidator>
<p>
<ASP:DataList id="Products" ShowHeader=false ShowFooter=false RepeatColumns="2" RepeatDirection="horizontal" BorderWidth=0 runat="server">
<ItemTemplate>
<table>
<tr>
<td width="150" style="text-align:center; font-size:8pt; vertical-align:top; height:200">
<ASP:ImageButton borderwidth=6 bordercolor="#ffffcc" command="Select" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "ImagePath") %>' runat="server"/>
<p>
<%# DataBinder.Eval(Container.DataItem, "ProductName") %> <br>
<%# DataBinder.Eval(Container.DataItem, "UnitPrice", "{0:C}").ToString() %>
</td>
</tr>
</table>
</ItemTemplate>
</ASP:DataList>
</form>
</body>
</html>
业务逻辑层
Code
using System.Reflection;
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("A QuickStart Tutorial Assembly")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft Corporation")]
[assembly: AssemblyProduct("Microsoft QuickStart Tutorials")]
[assembly: AssemblyCopyright(" Microsoft Corporation. All rights reserved.")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.1.*")]
namespace BusinessLayer
{
using System;
using System.Data;
using System.Data.SqlClient;
using DataLayer;
public class BusObj
{
private DataObj data;
public BusObj()
{
data = new DataObj(System.Configuration.ConfigurationSettings.AppSettings["GTGString"].ToString());
}
public DataView GetCategories()
{
return data.GetCategories();
}
public DataView GetProductsForCategory(String category, int customerid)
{
DataView view = data.GetProductsForCategory(category);
double discount = 0;
if ((customerid >= 25)&&(customerid < 50))
{
discount = .50;
}
else if ((customerid >= 50)&&(customerid < 75))
{
discount = 1.00;
}
else if ((customerid >= 75)&&(customerid < 100))
{
discount = 1.50;
}
for (int i=0; i<view.Count; i++)
{
view[i]["UnitPrice"] = Double.Parse(view[i]["UnitPrice"].ToString()) - discount;
}
return view;
}
}
}
数据访问层
Code
using System.Reflection;
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("A QuickStart Tutorial Assembly")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft Corporation")]
[assembly: AssemblyProduct("Microsoft QuickStart Tutorials")]
[assembly: AssemblyCopyright(" Microsoft Corporation. All rights reserved.")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.1.*")]
namespace DataLayer
{
using System;
using System.Data;
using System.Data.SqlClient;
public class DataObj
{
private String _connStr;
public DataObj()
{
_connStr = null;
}
public DataObj(String connStr)
{
_connStr = connStr;
}
public String ConnectionString
{
get
{
return _connStr;
}
set
{
_connStr = value;
}
}
public DataView GetCategories()
{
SqlConnection myConnection = new SqlConnection(_connStr);
SqlDataAdapter myCommand = new SqlDataAdapter("select distinct CategoryName from Categories", myConnection);
DataSet ds = new DataSet();
try {
myCommand.Fill(ds, "Categories");
return ds.Tables["Categories"].DefaultView;
}
catch (Exception ex){
throw (ex);
}
finally{
myConnection.Close();
}
}
public DataView GetProductsForCategory(String category)
{
SqlConnection myConnection = new SqlConnection(_connStr);
SqlDataAdapter myCommand = new SqlDataAdapter("select ProductName, ImagePath, UnitPrice, c.CategoryId from Products p, Categories c where c.CategoryName='" + category + "' and p.CategoryId = c.CategoryId", myConnection);
DataSet ds = new DataSet();
try {
myCommand.Fill(ds, "Products");
return ds.Tables["Products"].DefaultView;
}
catch (Exception ex){
throw (ex);
}
finally{
myConnection.Close();
}
}
}
}