我做了个购物车用的是datagird ,代码 是 COPY别人的
中间 有一段 糊涂了
public void CreateCartTable( ) //创建购物车 

DataSet ds = new DataSet( ); 
DataTable newDT=new DataTable( "CartTable" ); 
ds.Tables.Add( newDT ); 
DataColumn newDC; 
newDC=new DataColumn( "ProdID",System.Type.GetType( "System.Int32" ) ); 
ds.Tables["CartTable"].Columns.Add( newDC ); 
newDC=new DataColumn( "ProdCount",System.Type.GetType( "System.Int32" ) ); 
newDC.DefaultValue=1; 
ds.Tables["CartTable"].Columns.Add( newDC ); 
newDC=new DataColumn( "ProName",System.Type.GetType( "System.String" ) ); 
ds.Tables["CartTable"].Columns.Add( newDC ); 
newDC=new DataColumn( "UnitPrice",System.Type.GetType( "System.Double" ) ); 
ds.Tables["CartTable"].Columns.Add( newDC ); 
newDC=new DataColumn( "TotalPrice",System.Type.GetType( "System.Double" ) ); 
ds.Tables["CartTable"].Columns.Add( newDC ); 
newDC=new DataColumn( "IsDeleted",System.Type.GetType( "System.Int32" ) ); 
newDC.DefaultValue=0; 
// public void WriteShoppingCart( ) 中 newDR[5]="0"; 
行,已被注销, ds.Tables["CartTable"].Columns.Add( newDC ); 
Session["myCartTable"]=newDT; 
ShoppingCartDlt.DataSource=ds.Tables["CartTable"].DefaultView; 
ShoppingCartDlt.DataBind( ); 
}   恩 newDC=new DataColumn( "ProdID",System.Type.GetType( "System.Int32" ) );  这句看不明白。新生成的行 里边的数据prodid 是从那里来的  自己定义的。。shoppingcartdlt 是datagird的ID  他进行 帮的数据源 是什么啊   
这个 文章的 原地址是:http://blog.csdn.net/octverve/archive/2007/09/04/1771087.aspx
希望 在大家的帮助 下 我能把 这个 购物车功能实现呵呵 

解决方案 »

  1.   

    是的  是为表 创建列  我明白..但是  他创建列 哪个 PRODID  是什么意思啊????
    是为了对应数据库里的字段吗??
    因为这个代码 没提供数据库..~但是  我感觉 是不是购物车应该 把东西都放在TABLE 然后最后一切提交给表里啊...
      

  2.   

    这是个DATASET中DATATABLE表中列框架的创建,有什么疑惑吗?这个PRODID一般是你选商品的ID号.比如你选择一件商品,就添加一条记录,其中当然主键就是PRODID了,比如衬衣A的ID为chenyi1001,衬衣B的ID为CHENYI1002,当你分别选择这两种商品的时候就分别INSERT了这两条记录.如果你再选择衬衣A,也就是买两件,此时你就要更改DATATABLE中第一行中的数量列为2.总之,DATATABLE相当于一个临时存储变量,和ARRAY集合之类的没有什么区别,只不过DATASET与数据库有个中间桥梁ADAPTOR,所以用DATATABLE比较合适一些,比较灵活,最后提交到数据库.
      

  3.   

    我的意思是说 PRODID 是 自己建的变量名,还是数据库的字段名.
    如果是自己建立的 变量名 那么购物车里的这个商品ID的其他内容 比如商品名字 商品价格 又是如何查询出来绑顶在datagrid中的.
    如果是数据库里的字段  我又没看到数据库连接.......
    ShoppingCartDlt.DataSource=ds.Tables["CartTable"].DefaultView; 
    中的 CartTable是个什么呢疑惑中..呵呵 
    ~`~~我是个半调子....~~~希望大家帮忙解释下..我的确是想了  但是没明白...
      

  4.   


    现在明白了吧?仔细想想流程.
            绑定   =========                    UPDATE
       数据库==== |  商品列表  |-------->DATASET-------->数据库
                   =========     (临时存储更改变量)
      

  5.   

    恩~~你的意思是说..~~那些 字段 都是数据库表里的字段 是吧,.....
    ~~~我这里 上一个页是 这个商品展示  然后一个 BUTTON(购买) 用response.redirect 超连接把商品ID传过去
    ~那么 我现在就应该 是根据这个商品ID 去数据库查询 出 该商品的数据 显示 在购 物车中但是 我现在 看不到 代码 里那里有数据源
      

  6.   

    饿 carttable  这个应该是 数据库中的 购物车表 名吧。。对吧。。呵呵
      

  7.   

    //如果没有该商品,在表中新加如一行. DataRow newDR; 
    double unitp; 
    String strcon="provider=Microsoft.jet.OLEDB.4.0; 
    data Source="+Server.MapPath( ConfigurationSettings.AppSettings["MDBpath2"] )+"; 
    "; 
    OleDbConnection myConnection = new OleDbConnection( strcon ); 
    string strSQL= "select * from pro where product_id="+AddProID+""; 
    OleDbDataAdapter myCommand = new OleDbDataAdapter( strSQL, myConnection );
    DataSet ds = new DataSet( ); 
    myCommand.Fill( ds, "AddP" ); 
    newDR=nowTable.NewRow( ); 
    newDR[0]=AddProID; 
    newDR[2]=ds.Tables["Addp"].Rows[0]["product_name"].ToString( ); 
    unitp=Double.Parse( ds.Tables["AddP"].Rows[0]["product_memprice"].ToString( ) ); 
    //会员价 newDR[3]=unitp; 
    newDR[4]=unitp; 
    //第一次读库,所以总价格和单价是一样的. //newDR[5]="0"; 
    nowTable.Rows.Add( newDR ); 
    myConnection.Close( ); 

      

  8.   

    注意DATASET中无论是INSERT记录行操作,还是更新,或是撤消购买某个产品之间.DATASET操作DATASET的INSERT和UPDATE记录行时,要注意用户操作和DATASET值的改变时的接口.
    即数据是从哪获取来的.注意跟踪整个流程...