获取Values[0]之前请确保Values里面有值。

解决方案 »

  1.   

    把36行放到GridView_RowUpdating和GridView_RowDeleting事件中
      

  2.   

    GridView实现连接数据库、选择、编辑、删除商品信息功能
    //查询绑定连接数据控件
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {  
                BindData();//调用自定义方法绑定数据到控件
            }
        }
        public void BindData()
        {
            string strCon = ConfigurationManager.AppSettings["conStr"];//定义数据库连接字符串
            string sqlstr = "select * from mrbccd";//定义执行查询操作的SQL语句
            SqlConnection con = new SqlConnection(strCon);//创建数据库连接对象
            SqlDataAdapter da = new SqlDataAdapter(sqlstr, con);//创建数据适配器
            DataSet ds = new DataSet();//创建数据集
            da.Fill(ds); //填充数据集
            GridView1.DataSource = ds;//设置GridView控件的数据源为创建的数据集ds
            //将数据库表中的主键字段放入GridView控件的DataKeyNames属性中
            GridView1.DataKeyNames = new string[] { "BccdID" };
            GridView1.DataBind();//绑定数据库表中数据
    }
    //绑定索引显示数据
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            BindData();//数据绑定
        }//CodeGo.net/
    //更新数据库数据表
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
             //取得编辑行的关键字段的值
            string bccdID = GridView1.DataKeys[e.RowIndex].Value.ToString();
            //取得文本框中输入的内容
            string bccdName=((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();
            string bccdPrice=((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();
            string bccdSaleDate=((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim();
            string bccdInStock=((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim();
            //定义更新操作的SQL语句
            string update_sql = "update mrbccd set BccdName='" + bccdName + "',BccdPrice='" + bccdPrice + "',bccdSaleDate='" + Convert.ToDateTime(bccdSaleDate) + "',BccdInStock='" + bccdInStock + "' where BccdID='" + bccdID + "'";
            bool update = ExceSQL(update_sql);//调用ExceSQL执行更新操作
            if (update)
            {
                Response.Write("<script language=javascript>alert('修改成功!')</script>");
                //设置GridView控件的编辑项的索引为-1,即取消编辑
                GridView1.EditIndex = -1;
                BindData();
            }
            else
            {
                Response.Write("<script language=javascript>alert('修改失败!');</script>");
            }
        }
    //删除数据表中的数据
      protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            //定义一个整型变量count存储根据当前行索引获取到的指定单元格中的字段值
            int count = int.Parse(GridView1.Rows[e.RowIndex].Cells[4].Text.Trim());
            if (count > 0)
            {
                e.Cancel = true;//取消删除动作
                lblMessage.Text = "警告:库存量大于0的商品不得删除!";
                lblMessage.ForeColor = System.Drawing.Color.Red;
                return;
            }
            string delete_sql = "delete from mrbccd where BccdID='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
            bool delete = ExceSQL(delete_sql);//调用ExceSQL执行删除操作
            if (delete)
            {
                Response.Write("<script language=javascript>alert('删除成功!')</script>");
                BindData();//调用自定义方法重新绑定控件中数据
            }
            else
            {
                Response.Write("<script language=javascript>alert('删除失败!')</script>");
            }
        }