试图在gridview上获取值

时间:2012-08-09 14:26:59

标签: c# asp.net

我正在尝试使用以下代码在GridView上获取值:

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    GridViewRow row = GridView1.SelectedRow;
    string Username = row.Cells[3].Text;
    string Password = row.Cells[4].Text;
    string Email = row.Cells[5].Text;
    string ID_Inscricao = row.Cells[1].Text;
    SqlConnection sqlConn = new SqlConnection(
        ConfigurationManager.ConnectionStrings["FormacaoConnectionString"].ToString());
    SqlCommand sqlComm = new SqlCommand();

    sqlComm = sqlConn.CreateCommand();
    sqlComm.Parameters.Add("@Username", SqlDbType.Text);
    sqlComm.Parameters.Add("@Password", SqlDbType.Text);
    sqlComm.Parameters.Add("@Email", SqlDbType.Text);
    sqlComm.Parameters.Add("@ID_Inscricao", SqlDbType.Text);

    sqlComm.Parameters["@Username"].Value = Username;
    sqlComm.Parameters["@Password"].Value = Password;
    sqlComm.Parameters["@Email"].Value = Email;
    sqlComm.Parameters["@ID_Inscricao"].Value = ID_Inscricao;
    string sql = "INSERT INTO Utilizadores " +
        "(Username, Password, Email,ID_Inscricao) " +
        "VALUES (@Username, @Password, @Email, @ID_Inscricao)";
    sqlComm.CommandText = sql;
    sqlConn.Open();
    sqlComm.ExecuteNonQuery();
    sqlConn.Close();
}

所以,问题是我无法从GridView获取值,而是得到“NullReferenceException未被用户代码处理”。谁能告诉我我做错了什么?

祝你好运

2 个答案:

答案 0 :(得分:1)

每一行看起来像这样:

sqlComm.Parameters["@Username"].Value = Username;

要求该参数实际存在于命令对象上,但您已将这些行注释掉。放回其中一个:

sqlComm.Parameters.Add("@Username", SqlDbType.Text);

为每个参数设置值。


在评论后编辑

基于此行导致NullReferenceException

的事实
string Username = row.Cells[3].Text;

我可以说cetain要么

a)row为空 - 网格中没有SelectedRow  b)row.Cells为空,所选行没有单元格
 c)row.Cells[3]为空,所选行包含单元格,但没有单元格4(单元格基于零)

除此之外没有办法帮助你,你应该在失败的行上设置一个断点并检查上面3个案例中的每个案例,看看哪个是空的

答案 1 :(得分:0)

有两个选项,具体取决于您绑定项目的方式。 你可以这样做: Row.Cells [“NAMEOFBINDING”],这将为您提供价值。 您现在可以看到许多隐藏的单元格。

您可能也想尝试其他活动,例如“RowUpdated” 此外,尝试查看您的事件参数,看看它是否有任何多汁的信息。

如果你在一小时内没有得到满意的回答,我会写一个代码样本。