购物车ShoppingCart.aspx.cs中:
  Cart shoppingCart = ShoppingCart(false);
                if (!shoppingCart.IsEmpty)
                {
                    CartItemsDataGrid.DataSource = (ICollection)shoppingCart.OrderItems.DefaultView;
                    CartItemsDataGrid.DataBind();
                    cartHasItems = true;
                }
数据源是Cart类中的OrderItems表:
public DataTable OrderItems
        {
            get
            {
                ApplicationAssert.Check(cartOrderData != null, "Don't call if IsEmpty is True", ApplicationAssert.LineNumber);
                return cartOrderData.Tables[OrderData.ORDER_ITEMS_TABLE];
            }
        }
但这里表内是空的,填加记录是Cart类中的AddItem方法,如下:
public void AddItem(int itemId, String itemDescription, Decimal itemPrice)
        {
            DataTable itemTable = OrderItems;
            DataView itemSource = new DataView(itemTable);
        
            //search for item, check to see if the item has already been ordered
            itemSource.RowFilter = "ItemNumber = " + itemId.ToString();
            
            if (itemSource.Count > 0)
            {
                DataRowView sourceRow = itemSource[0];
                short count = (short)(sourceRow[OrderData.QUANTITY_FIELD]);
                //maximum allowed for any specific item is 50
                if (count < 50)
                {
                    //bump the quantity by one
                    count += 1;
                    sourceRow[OrderData.QUANTITY_FIELD] = count;
                    sourceRow[OrderData.EXTENDED_FIELD] = (Decimal)sourceRow[OrderData.PRICE_FIELD] * count;
                }
            }
            else
            {
        
                //It's a new item
                DataRow itemRow = itemTable.NewRow();
                itemRow[OrderData.ITEM_NUMBER_FIELD] = itemId;
                itemRow[OrderData.QUANTITY_FIELD] = 1;
                itemRow[OrderData.DESCRIPTION_FIELD] = itemDescription;
                itemRow[OrderData.PRICE_FIELD] = itemPrice;
                itemRow[OrderData.EXTENDED_FIELD] = itemPrice;
        
                //Add it to the table
                itemTable.Rows.Add(itemRow);
            }
        }
我的问题是这里的AddItem方法是加记录到自定义的一个itemTable表中, 没有关联到OrderItems表中啊,请教他是在什么地方关联的啊,看了一天了没看出来. 
(因表达能力欠佳, 而牵涉的代码较多,所以希望研究过的,或是能看明白我描述的指导我一下,谢谢,高分送上)

解决方案 »

  1.   

    倒...DataTable itemTable = OrderItems;此时, itemTable ==cartOrderData.Tables[OrderData.ORDER_ITEMS_TABLE];当 itemTable.Rows.Add(itemRow)后,OrderItems就已经有
    OrderItems.DataRow[OrderItems.DataRow.count]==itemRow成立了.这就是关联的说!
      

  2.   

    谢谢, 了解了, 但是我自己模仿作了一个在DataRow itemRow = itemTable.NewRow();出现在错误, 说"未将对象引用设置到对象的实例"。这个大概是什么原因呢.
      

  3.   

    itemTable没有实例化!应该:
    C#:
    DataTable itemTable=new DataTable();
    DataRow itemRow = itemTable.NewRow();VB:
    Dim itemTableAs DataTable = New DataTable 
    Dim itemRow As DataRow = itemTable.NewRow