protected void dg_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
        cart mycart = (cart)Session["icart"];
        if (e.CommandName == "edititem")
        {
            int n = Convert.ToInt16(((TextBox)e.Item.FindControl("tcount")).Text);
            double pp = Convert.ToDouble((((TextBox)e.Item.FindControl("tprice")).Text));
            //double sum = pp * n;            mycart[this.dg.DataKeyField[e.Item.ItemIndex].ToString()].cprice = pp; <----这个地方
            mycart[this.dg.DataKeys[e.Item.ItemIndex].ToString()].ccount = n; <----这个地方
            //tsum.Text = "合计: " + sum.ToString() + "元";
        }
        else if (e.CommandName == "delitem")
        {
            mycart.remove(this.dg.DataKeys[e.Item.ItemIndex].ToString()); <----这个地方
        }
        this.dg.DataSource = mycart;
        this.dg.DataBind();
        Session["icart"] = mycart;
    }报错!!!上面说索引值超出范围。
可测试的时候明明索引值是0。
各位大虾帮忙看看阿

解决方案 »

  1.   

    dg.DataKeyField ==>dg.DataKeys
      

  2.   

    写错了,不知道你的cart是怎么定义的
      

  3.   

    我的cart定义如下:
    public class cart : IEnumerable
    {
        Hashtable ht = null;    public cart()
        {
            ht = new Hashtable();
        }
        public cart(int count)
        {
            ht = new Hashtable(count);
        }
        public void add(itemlist myitem)
        {
            if (ht.ContainsKey(myitem.cid))
            {
                ((itemlist)ht[myitem.cid]).ccount += myitem.ccount;
            }
            else
            {
                ht.Add(myitem.cid,myitem);
            }
        }
        public void remove(string itemid)
        {
            if (ht.ContainsKey(itemid))
            {
                ht.Remove(itemid);
            }
        }
        public itemlist this[string itemid]
        {
            get
            {
                if (ht.ContainsKey(itemid))
                {
                    return (itemlist)ht[itemid];
                }
                return null;
            }
        }    #region IEnumerable 成员    public IEnumerator GetEnumerator()
        {
            //throw new Exception("The method or operation is not implemented.");
            return ht.Values.GetEnumerator();
        }    #endregion}
      

  4.   

    TO:cpp2017(幕白兄)
    改了还是没有用啊