1

グリッドビュー行を読み込もうとしています。これが私のコードです:

 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 です

ありがとう

4

1 に答える 1