返回首页

我想在GridView更新使用程序。
代码(CS): -

public void update(object sender, GridViewUpdateEventArgs e)

        {

            SqlConnection conn = new SqlConnection(str_con);

            conn.Open();

            SqlCommand cmd1 = new SqlCommand("UpdateInfo", conn);

            cmd1.CommandType = CommandType.StoredProcedure;

            cmd1.Parameters.Add("@s_name", SqlDbType.VarChar).Value = (gv1.Rows[e.RowIndex].Cells[1].Text);

            cmd1.Parameters.Add("@s_phone", SqlDbType.Int).Value = Convert.ToInt32(gv1.Rows[e.RowIndex].Cells[2].Text);//<-----error shows here

            cmd1.Parameters.Add("@s_degree", SqlDbType.VarChar).Value = (gv1.Rows[e.RowIndex].Cells[3].Text);

            cmd1.Parameters.Add("@s_id", SqlDbType.Int).Value = Convert.ToInt32(gv1.Rows[e.RowIndex].Cells[4].Text);

            cmd1.ExecuteNonQuery();

            gv1.EditIndex = -1;

            BindData();

            conn.Close();

        }

存储过程: -
{C}

回答

评论会员:游客 时间:2012/02/07
!使用"的ItemTemplateGridView的FindControl的"的文本框
Valy_Me
评论会员:游客 时间:2012/02/07
1。如果你@S_ID意味着从gv1.Rows值参数值[e.RowIndex]细胞[4]。文字是0比我不认为将作出任何更新,因为通常你没有在数据库中的条目ID=0(2)如果不正确的值比其他细胞的编辑,显示你有一个问题,从数据库中获取结果(存储过程/s的返回行的DataGrid绑定的)。(3)如果不正确的值只是为可编辑的行,比你有一个问题,当击中"编辑"按钮(编辑事件处理程序)4。确保你有你想要得到的所有值的单元格的右手食指...的意思,例如:细胞指数4是正确的:你@S_ID参数|shek124:嗨,正如您所使用的电话号码,更好地维护varchar类型,而不是整数。希望这可以帮助你。关于谢赫
米卡Wendelius
评论会员:游客 时间:2012/02/07
使用调试,检查在gv1.Rows价值[e.RowIndex]细胞[2]文本。最有可能包含非法字符,不能转换为整数
srinivas vadepally:嗨navneeth,
我认为你是给非数值文本,调试,并发现它的价值。爱德华・卢
评论会员:游客 时间:2012/02/07
使用TryParse方法。这是比使用CONVERT或CAST安全。的问候,爱德华