default.aspx<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DataList ID="DataList1" runat="server" DataKeyField="petID" DataSourceID="SqlDataSource1" OnItemCommand="DataList1_ItemCommand">
            <ItemTemplate>
                petID:
                <asp:Label ID="petIDLabel" runat="server" Text='<%# Eval("petID") %>'></asp:Label><br />
                petTypeID:
                <asp:Label ID="petTypeIDLabel" runat="server" Text='<%# Eval("petTypeID") %>'></asp:Label><br />
                petName:
                <asp:Label ID="petNameLabel" runat="server" Text='<%# Eval("petName") %>'></asp:Label><br />
                petPrice:
                <asp:Label ID="petPriceLabel" runat="server" Text='<%# Eval("petPrice") %>'></asp:Label><br />
                petPhoto:
                <asp:Label ID="petPhotoLabel" runat="server" Text='<%# Eval("petPhoto") %>'></asp:Label><br />
                petRe:
                <asp:Label ID="petReLabel" runat="server" Text='<%# Eval("petRe") %>'></asp:Label><br />
                                         <asp:LinkButton ID="LinkButton2" runat="server" CommandName="buy" Font-Names="隶书">buy</asp:LinkButton></td>
                <br />
            </ItemTemplate>
        </asp:DataList>
        &nbsp;
        <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click" Width="64px">查看购物车</asp:LinkButton></div>
    </form>
    
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ShoppingBusConnectionString %>" SelectCommand="SELECT [petID], [petTypeID], [petName], [petPrice], [petPhoto], [petRe] FROM [pet]"></asp:SqlDataSource>
</body>
</html>
default.aspx.csusing 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 _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {    }
    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
    {        string pid = this.DataList1.DataKeys[e.Item.ItemIndex].ToString();//取出宠物编号
        if (e.CommandName == "buy")//如果命令名是 buy,说明是购买
        {
            if (Session["bus"] == null)//先就得检查购物车是否存在,如果不存在,就建立呗
            {
                System.Collections.Hashtable ht = new Hashtable();//先建立一个哈希表                    
                ht.Add(pid, 1);//哈希表中的两个列,一个key,一个value ,我们就前面放宠物编号,后面放购买数量好了,预设置为1
                Session["bus"] = ht;//将哈希表赋值给Session对象
            }
            else//如果存在的话
            {
                Hashtable ht = (Hashtable)Session["bus"];//使用强制类型转换,再将Session["bus"]赋值给哈希表对象 ht
                if (ht[pid] == null)//如果哈希表中对应的ID没有,
                {
                    ht[pid] = 1;//那就直接给他设为 1
                }
                else//如果已经有对应的ID
                {
                    ht[pid] = (int)ht[pid] + 1;//那么就把原来的取出来再加上 1
                }
                Session["bus"] = ht;//最后再更新Session 对象
            }
        }
          }    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        Response.Redirect("Default2.aspx");
    }
}default2.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 Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        this.DataList1.DataSource = (Hashtable)Session["bus"];//直接利用哈希表作为数据源,
        this.DataList1.DataBind();//绑定一下
    }
}

解决方案 »

  1.   

    default页中datalist的pid 可以取到,放入hashtable后。再在default2的datalist2显示出来。
    可没有显示出来。哪位大侠帮忙看看?
      

  2.   

    既然是.NET 2.0
    System.Collections.Hashtable 
    最好替换为
    System.Collections.Generic.Dictionary<string, int>
      

  3.   

    你的第二个页面Default2.aspx的页面代码是这样的么<asp:DataList ID="DataList1" runat="server">
        <ItemTemplate>
            <%# Eval("Key") %> <%# Eval("Value") %>
        </ItemTemplate>
    </asp:DataList>
      

  4.   


    string pid = this.DataList1.DataKeys[e.Item.ItemIndex].ToString();//
    pid会不会为空,我想删除一条记录,可是点击删除时pid为空
    请帮忙一下,老兄。