2012-08-09 35 views
0

值:试图获取我想用下面的代码在一个GridView中取值上的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”。有人可以告诉我我做错了什么吗?

致以问候

+0

你能告诉我们你在哪一行得到一个'NullReferenceException'。 – Jamiec 2012-08-09 14:30:11

+0

Scratch,我想我看到它 - 您正在设置您尚未创建的参数的值(具体而言,您已在实际设置参数时注释了行) – Jamiec 2012-08-09 14:32:16

回答

1

每一行看起来像这样:

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

要求的参数实际存在的命令对象,但您评论过的那些行了。放回其中之一:

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

对于您为每个参数设置的值。


基于这样的事实评论

后编辑这行导致NullReferenceException

string Username = row.Cells[3].Text; 

我可以说对某类要么

一)row为空 - 网格中没有SelectedRow
b)row.Cells为空,则选定行无细胞
C)row.Cells[3]为空,选择行有细胞,但没有小区4(小区是基于零)

有没有帮助你进一步比路,你应该在失败的线上设置一个断点,然后检查上面的三种情况中的每一种,看看哪一个是空的。

+0

抱歉,他们没有,在工作版本中评论,发生错误,“string username = row.Cells [3]。文本;“ – 2012-08-09 14:40:21

+0

@ user1587816 - 请参阅更新 – Jamiec 2012-08-09 14:44:57

0

有几个选项,具体取决于您的绑定项目。 你可以这样做: Row.Cells [“NAMEOFBINDING”],这会给你带来价值。 您现在可能会看到许多隐藏的单元格。

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

如果您在一个小时内没有满意的答案,我会写一个代码示例。

+0

row.cells不工作相同错误 – 2012-08-09 14:45:48

+0

即时行在行更新,因为去更新后线消失,因为价值成为真。并且表格不会在“选择”中调用它们 – 2012-08-09 14:51:55

+0

这可能对您有所帮助。类似的问题已经提出。 http://stackoverflow.com/questions/11437903/asp-net-rowupdating-gridview-troubles – cshemby 2012-08-09 15:01:20