protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        string index = GridView1.DataKeys[e.RowIndex]["carid"].ToString();//这行报的错
         
            XmlDocument doc = new XmlDocument();
            doc.Load(Server.MapPath("car.xml"));
            XmlNodeList node = doc.SelectSingleNode("XmlTest").ChildNodes;
            foreach (XmlNode n in node)
            {
                XmlElement element = (XmlElement)n;
                if (element.ChildNodes[0].InnerText == index)
                {
                    element.ParentNode.RemoveChild(element);
                    doc.Save(Server.MapPath("car.xml"));用xml做的数据源,而且点删除第一下没反映,第二下报错。然后把报错的窗口关了,功能是实现了。请高手指教

解决方案 »

  1.   

    下标越界 。
    GridView1.DataKeys是count 。
      

  2.   

    GridView1.DataKeys[e.RowIndex]["carid"].ToString();//
    控件如果绑定了主键,这里就不需要在给字段名吧
      

  3.   


    GridView1.DataKeys是count 。是什么意思,能说得具体点吗?谢谢
      

  4.   

    GridView1.DataKeys[e.RowIndex].Value.ToString();//
      

  5.   

    那你断点看看你的e.Rowindex这个值对不对啊
      

  6.   

    index的值是对啊。存在这条数据的。。帮帮忙啊。
      

  7.   

    index 的值比e.Rowindex的值多1   。
      

  8.   

    试试这样吧
    GridView gv = (GridView)sender;
    string index = gv.DataKeys[e.RowIndex].Value.ToString()