ASP.Net课堂--实验6

ASP.Net课堂--实验6

1、将test数据库附加到数据库管理系统中;数据库中的book_info包含下列数据:


2、新建一个网站,将images文件夹复制到网站中;

3、在Default.aspx中,通过DataList控件展示数据库中的所有数据,以行为主序,每行3列,单击购买按钮时,将商品的ID和数量保存到HashTable中,并将HashTable放置到Session中。


protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
    {
        string id = e.CommandArgument.ToString();
        Hashtable ht;
        if (Session["shopcar"] == null)
        {
            ht = new Hashtable();
            ht.Add(id, 1);
            Session["shopcar"] = ht;
        }
        else
        {
            ht = (Hashtable)Session["shopcar"];
            if (ht.Contains(id))
            {
                int count = int.Parse(ht[id].ToString());
                ht[id] = count + 1;
                Session["shopcar"] = ht;
                Response.Write(count + 1);
            }
            else
            {
                ht.Add(id, 1);
                Session["shopcar"] = ht;
            }
        }
    }


4、在Default.aspx中添加一个超链接,链接到shopcart.aspx,在shopcart.aspx中显示用户购买的商品信息。


提示:

A、在shopcart中先定义下列变量:

Hashtable ht;

DataTable dt;

string connstring=@"DataSource=.\SQLEXPRESS;Initial Catalog=test;Integrated Security=True";

SqlConnection conn;

SqlCommand cmd;

SqlDataReader sdr;

B、页面中添加一个GridView。

C、在page_load中,将dt实例化,建立各列。

protected void Page_Load(object sender, EventArgs e)

{

dt = new DataTable();

DataColumn col = new DataColumn();

col.ColumnName= "id";

col.DataType =System.Type.GetType("System.String");

dt.Columns.Add(col);

col = new DataColumn();

col.ColumnName= "name";

col.DataType =System.Type.GetType("System.String");

dt.Columns.Add(col);

col = new DataColumn();

col.ColumnName= "Num";

col.DataType =System.Type.GetType("System.Int32");

dt.Columns.Add(col);

col = new DataColumn();

col.ColumnName= "price";

col.DataType =System.Type.GetType("System.Single");

dt.Columns.Add(col);

col = new DataColumn();

col.ColumnName= "Total";

col.DataType =System.Type.GetType("System.Single");

dt.Columns.Add(col);

if (!IsPostBack)

{

Bind();

}

}

public void Bind()

{

if (Session["shopcar"] == null)

{

Response.Write("<script>if(confirm('你没有登录')window.location='Default15.aspx';else window.close();</script>");

}

else

{

ht = (Hashtable)Session["shopcar"];

foreach (object item in ht.Keys)

{

string id = item.ToString();

int num = int.Parse(ht[item].ToString());

string sql = "selectbook_name,price from book_info where book_id='" + id + "'";

conn = new SqlConnection(connstring);

cmd = new SqlCommand(sql, conn);

conn.Open();

sdr =cmd.ExecuteReader();

if (sdr.HasRows)

{

sdr.Read();

DataRow row = dt.NewRow();

row["id"] = id;

row["Num"] = num;

row["name"] = sdr.GetString(0);

row["price"] =float.Parse(sdr[1].ToString());

row["total"] =num*(float.Parse(sdr[1].ToString()));

dt.Rows.Add(row);

}

sdr.Close();

conn.Close();

}

GridView1.DataSource = dt.DefaultView;

GridView1.DataBind();

}

}

D、这时可以看到用户购买的商品,但不能修改数量,也不能删除。

E、添加修改数量,删除商品功能,在aspx页面中定义GridView中的各列:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">

<Columns>

<asp:BoundField DataField="id" HeaderText="ID" />

<asp:BoundField DataField="name" HeaderText="名称" />

<asp:BoundField DataField="price" HeaderText="价格" />

<asp:TemplateField>

<ItemTemplate>

<asp:TextBox runat="server" ID="textbox1" Text='<%# Eval("Num") %>'

ontextchanged="textbox1_TextChanged" AutoPostBack="True" ></asp:TextBox>

</ItemTemplate>

</asp:TemplateField>

<asp:BoundField DataField="total" HeaderText="总计" />

<asp:TemplateField>

<ItemTemplate>

<asp:Button runat="server" ID="button1" CommandArgument='<%# Eval("id") %>'

Text="删除" onclick="button1_Click" />

</ItemTemplate>

</asp:TemplateField>

</Columns>

</asp:GridView>

F、为GridView中的文本框添加TextChanged事件:

protected void textbox1_TextChanged(object sender, EventArgs e)

{

Hashtable ht =(Hashtable)Session["shopcar"];

if (ht == null) return;

for (int i = 0; i < GridView1.Rows.Count;i++)

{

string id =GridView1.Rows[i].Cells[0].Text.ToString();

Response.Write(id);

string num = ((TextBox)GridView1.Rows[i].FindControl("textbox1")).Text;

Response.Write(" "+num+"<br />");

ht[id] = num;

}

Session["shopcar"] = ht;

Bind();

}

G、为按钮添加单击事件:

protected void button1_Click(object sender, EventArgs e)

{

string id = ((Button)sender).CommandArgument;

Hashtable ht = (Hashtable)Session["shopcar"];

if (ht == null) return;

ht.Remove(id);

Bind();

}



购物车代码:showcart.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
using System.Data;
using System.Data.SqlClient;

public partial class shopcart : System.Web.UI.Page
{
    Hashtable ht;
    DataTable dt;
    string connstr = "Data Source=.\\SQLEXPRESS;AttachDbFilename=F:\\大三课程\\ASP.Net程序设计\\实验\\实验7要求与素材\\test.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
    SqlConnection conn;
    SqlCommand cmd;
    SqlDataReader sdr;
    protected void Page_Load(object sender, EventArgs e)
    {
        dt = new DataTable();
        DataColumn col = new DataColumn();
        col.ColumnName = "id";
        col.DataType = System.Type.GetType("System.String");
        dt.Columns.Add(col);
        col = new DataColumn();
        col.ColumnName = "name";
        col.DataType = System.Type.GetType("System.String");
        dt.Columns.Add(col);
        col = new DataColumn();
        col.ColumnName = "Num";
        col.DataType = System.Type.GetType("System.Int32");
        dt.Columns.Add(col);
        col = new DataColumn();
        col.ColumnName = "price";
        col.DataType = System.Type.GetType("System.Single");
        dt.Columns.Add(col);
        col = new DataColumn();
        col.ColumnName = "Total";
        col.DataType = System.Type.GetType("System.Single");
        dt.Columns.Add(col);

        if (!IsPostBack)
        {
            Bind();
        }

    }

    public void Bind()
    {
        if (Session["shopcar"] == null)
        {
            Response.Write("<script>if(confirm('你没有登录')window.location='Default.aspx';else  window.close();</script>");
        }
        else
        {
            ht = (Hashtable)Session["shopcar"];
            foreach (object item in ht.Keys)
            {
                string id = item.ToString();

                int num = int.Parse((ht[item].ToString()));
                string sql = "select book_name,price from book_info where book_id='" + id + "'";
                conn = new SqlConnection(connstr);

                cmd = new SqlCommand(sql, conn);
                conn.Open();

                sdr = cmd.ExecuteReader();
                if (sdr.HasRows)
                {
                    sdr.Read();
                    DataRow row = dt.NewRow();
                    row["id"] = id;
                    row["Num"] = num;
                    row["name"] = sdr.GetString(0);
                    row["price"] = float.Parse(sdr[1].ToString());
                    row["total"] = num * (float.Parse(sdr[1].ToString()));
                    dt.Rows.Add(row);

                }
                sdr.Close();
                conn.Close();
            }
        }
        GridView1.DataSource = dt.DefaultView;
        GridView1.DataBind();

    }
    protected void textbox1_TextChanged(object sender, EventArgs e)
    {
        Hashtable ht = (Hashtable)Session["shopcar"];
        if (ht == null) return;
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            string id = GridView1.Rows[i].Cells[0].Text.ToString();
            Response.Write(id);
            string num = ((TextBox)GridView1.Rows[i].FindControl("textbox1")).Text;
            Response.Write("    " + num + "<br />");
            ht[id] = num;
        }
        Session["shopcar"] = ht;
        Bind();

    }
    protected void button1_Click(object sender, EventArgs e)
    {
        string id = ((Button)sender).CommandArgument;
        Hashtable ht = (Hashtable)Session["shopcar"];
        if (ht == null) return;
        ht.Remove(id);
        Bind();

    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值