我正在尝试读取gridview行。这是我的代码:
protected void allStudents_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Approval")
{
// *** Retreive the DataGridRow
int row = -1;
int.TryParse(e.CommandArgument as string, out row);
GridViewRow gdrow = allStudents.Rows[row];
// *** Get the underlying data item - in this case a DataRow
DataRow dr = ((DataTable)this.allStudents.DataSource).Rows[gdrow.DataItemIndex];
// *** Retrieve our context
string courseCode = dr["CourseCode"].ToString();
string courseNumber = dr["CourseNumber"].ToString();
string term = dr["Term"].ToString();
SqlConnection con = new SqlConnection();
con.ConnectionString = Userfunctions.GetConnectionString();
con.Open();
SqlCommand cmd = new SqlCommand("SELECT RegisterTable.StudentID, StudentTable.Name, StudentTable.Surname FROM RegisterTable JOIN StudentTable ON RegisterTable.StudentID = StudentTable.ID WHERE RegisterTable.CourseCode = @courseCode AND RegisterTable.Term = @term AND RegisterTable.CourseNumber = @courseNumber", con);
cmd.Parameters.AddWithValue("@courseCode", courseCode);
cmd.Parameters.AddWithValue("@courseNumber", courseNumber);
cmd.Parameters.AddWithValue("@term", term);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
transcript.DataSource = dt;
transcript.DataBind();
Label1.Visible = true;
Label1.Text = "Students who are registered to " + courseCode + " " + courseNumber + " are listed below:";
}
}
但是以
开头的那一行DataRow dr = ((DataTable)this.allStudents.DataSource).Rows[gdrow.DataItemIndex];
我收到一条错误消息,指出“对象引用未设置为对象的实例。”。谁能在这里说出问题呢?
注意:allStudents是我的gridview的ID
由于
答案 0 :(得分:0)
该错误意味着该行中的引用为null
。也就是说,您正在尝试从对象获取数据,但那里没有实例化对象。
建议:在该行插入一个断点。调试代码。然后,在调试并在该行上,将鼠标光标移动到该行中的每个名称。调试器将为您提供有关每个变量的丰富详细信息。一旦找到哪一个为null(可能是allStudents或DataSource),您就可以在正确的轨道上解决问题。
你必须找出触发null
错误的任何内容,然后确保当你到达代码中的那一点时它不是null
。