日期:2014-05-16  浏览次数:20478 次

gridview更新时出错

 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            TextBox mount = new TextBox();
            int index = e.RowIndex;
            string id = GridView1.DataKeys[index].Value.ToString();
            int mount1 =Convert.ToInt32( ((TextBox)GridView1.Rows[index].Cells[3].FindControl("mount")).Text);
            //int i = Convert.ToInt32(mount);
            string sqlupdate = "update shopcart set mount='"+mount1+"' where cartid="+Convert.ToInt32(id) ;
            SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings["connection"].ConnectionString);
            sqlcon.Open();
            SqlCommand cmd = new SqlCommand(sqlupdate, sqlcon);
            cmd.ExecuteNonQuery();
            GridView1.EditIndex = -1;

            bindtogridview();
        }
我都把textbox实例化了,怎么还提示有错误呢,其实当浏览页面的时候,点击编辑后,数量的那列就没出现textbox
------解决方案--------------------
TextBox mount = new TextBox();
            int index = e.RowIndex;
            string id = GridView1.DataKeys[index].Value.ToString();
            int mount1 =Convert.ToInt32( ((TextBox)GridView1.Rows[index].Cells[3].FindControl("mount")).Text);


不能这样写的,你真正理解FindControl的意思了吗?FindControl("mount")是找一个ID为 mount 的TextBox,你有这个ID吗?
这里显然是错的
------解决方案--------------------
找不到mount
------解决方案--------------------
点编辑,你都没有textbox,又怎么找得到呢?
绑定时用BoundField,会自动出现编辑框的(不要设置ReadOnly)