//此页面主要是用于显示所有的书。用的是DataList来自定义显示模板。但是实际上可以使用DataGrid来处理。DataGrid也可以实现分页功能及自定义模板。只要将dDatagrid设为一个模板列,然后将DataList里的模板列代码Copy过去即可。
//此页面中每本书都要显示封面。这个问题我们可以通过一个过渡页来处理图片数据
<%@ Page language="c#" Codebehind="BookList.aspx.cs" AutoEventWireup="false" Inherits="CartTest.BookList" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>BookList</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="javascript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<LINK href="http://localhost/CartTest/StyleSheet1.css" type="text/css" rel="stylesheet">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:datalist id="DataList1" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 56px" runat="server"
DataKeyField="BookGuid" Width="650">
<ItemTemplate>
<TABLE id="Table14" cellSpacing="1" cellPadding="1" border="0">
<TR>
<TD>
<a href='<%# "BookView.aspx?BookID="+DataBinder.Eval(Container, "DataItem.BookGuid") %>'>
<!--imageview.aspx页面专用来处理书的图片--> <asp:Image id=Image1 runat="server" Width="120px" Height="144px" ImageUrl='<%# "ImageView.aspx?imgid="+DataBinder.Eval(Container, "DataItem.BookGuid") %>'>
</asp:Image>
</a>
</TD>
<TD vAlign="top">
<TABLE id="Table15" cellSpacing="1" cellPadding="1" width="300" border="1">
<TR>
<TD>书名:
<asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.BookTitle") %>'>
</asp:Label></TD>
</TR>
<TR>
<TD>图书简介:
<asp:Label id=Label2 style="OVERFLOW: hidden; TEXT-OVERFLOW: ellipsis" runat="server" Width="496" Text='<%# "<nobr>"+DataBinder.Eval(Container, "DataItem.BookComment")+"/<nobr>"%>' Height="50px">
</asp:Label></TD>
</TR>
<TR>
<TD>金额:
<asp:Label id=Label3 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Price","{0:C}") %>'>
</asp:Label></TD>
</TR>
</TABLE>
</TD>
</TR>
<TR>
<TD>
<asp:Label id="Label4" runat="server">日期:</asp:Label>
<asp:Label id=Label5 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.PublishDate", "{0:D}") %>'>
</asp:Label></TD>
<TD align="right">
<asp:ImageButton id="Imagebutton1" runat="server" ImageUrl="a.gif" CommandName="AddCart"></asp:ImageButton></TD>
</TR>
</TABLE>
</ItemTemplate>
<AlternatingItemTemplate>
<TABLE id="Table4" cellSpacing="1" cellPadding="1" bgColor="#eefeff" border="0">
<TR>
<TD>
<a href='<%# "BookView.aspx?BookID="+DataBinder.Eval(Container, "DataItem.BookGuid") %>'>
<!--imageview.aspx页面专用来处理书的图片--> <asp:Image id=Image2 runat="server" Width="120px" Height="144px" ImageUrl='<%# "ImageView.aspx?imgid="+DataBinder.Eval(Container, "DataItem.BookGuid") %>'>
</asp:Image></a></TD>
<TD vAlign="top">
<TABLE id="Table5" cellSpacing="1" cellPadding="1" width="300" border="1">
<TR>
<TD>书名:
<asp:Label id=Label6 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.BookTitle") %>'>
</asp:Label></TD>
</TR>
<TR>
<TD>图书简介:
<asp:Label id=Label7 style="OVERFLOW: hidden; TEXT-OVERFLOW: ellipsis" runat="server" Width="496px" Text='<%# DataBinder.Eval(Container, "DataItem.BookComment") %>' Height="50px">
</asp:Label></TD>
</TR>
<TR>
<TD>金额:
<asp:Label id=Label8 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Price") %>'>
</asp:Label></TD>
</TR>
</TABLE>
</TD>
</TR>
<TR>
<TD>
<asp:Label id="Label9" runat="server">日期:</asp:Label>
<asp:Label id=Label10 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.PublishDate") %>'>
</asp:Label></TD>
<TD align="right">
<asp:ImageButton id="Imagebutton2" runat="server" ImageUrl="a.gif"></asp:ImageButton></TD>
</TR>
</TABLE>
</AlternatingItemTemplate>
</asp:datalist></form>
</body>
</HTML>
//CS CODE
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
namespace CartTest
{
/// <summary>
/// BookList 的摘要说明。
/// </summary>
public class BookList : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataList DataList1;
private void Page_Load(object sender, System.EventArgs e)
{
if(!this.IsPostBack)
{
SqlConnection cn=new SqlConnection();
cn.ConnectionString="server=.;uid=sa;pwd=;database=p1";
cn.Open();
SqlCommand cmd=new SqlCommand();
cmd.Connection=cn;
cmd.CommandText="select * from books ";
SqlDataAdapter da=new SqlDataAdapter();
da.SelectCommand=cmd;
DataSet ds=new DataSet();
da.Fill(ds);
cn.Close();
this.DataList1.DataSource=ds.Tables[0];
this.DataBind();
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataList1.ItemCommand += new System.Web.UI.WebControls.DataListCommandEventHandler(this.DataList1_ItemCommand);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void DataList1_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
//用户选中一本书后,默认订一本书
string bookGuid=this.DataList1.DataKeys[e.Item.ItemIndex].ToString();
Book b=new Book();
//首先获得自己的购物车
Books bs=(Books)Session["MyCart"];
b.BookID=bookGuid;
b.Num=1;
//根据ITEM的类型取值
if(e.Item.ItemType==ListItemType.Item)
{
b.Price=Convert.ToDecimal(((Label)e.Item.FindControl("Label3")).Text.Substring(1));
b.Title=((Label)e.Item.FindControl("Label1")).Text;
}
else if(e.Item.ItemType==ListItemType.AlternatingItem)
{
b.Price=Convert.ToDecimal(((Label)e.Item.FindControl("Label8")).Text.Substring(1));
b.Title=((Label)e.Item.FindControl("Label6")).Text;
}
//将书加入到购物车
bs.Add(b);
Session["MyCart"]=bs;
//打开购物车页面。
Response.Write("<script>window.open('webform1.aspx')</script>");
}
}
}