"No se puede agregar o cambiar el registro porque se necesita un registro relacionado en la tabla 'Alumno'."
Aquí dejo código a los fines de si Uds. pueden determinar el error, o la forma correcta de sintaxis para que funcione, lo acrediten por este medio, etc.......
Disculpen las molestias, estare siempre agradecido, nos vemos....
Código
protected void Page_Load(object sender, EventArgs e) { GridCursos.DataSource = b.fillGridView("Select Id_Curso, Año, sección From Curso"); GridCursos.DataBind(); GridAlumno.DataSource = b.fillListView("Select Id_Alumno, Nombre, Apellido From Alumno Order By Nombre Asc"); GridAlumno.DataBind(); } protected void GridCursos_SelectedIndexChanged(object sender, EventArgs e) { // Se obtiene la fila seleccionada del gridview GridViewRow row = GridCursos.SelectedRow; // Obtengo el id de la entidad que se esta editando // en este caso de la entidad Curso ViewState["idCurso"] = Convert.ToInt32(GridCursos.DataKeys[row.RowIndex].Value); CargarData(); } private void CargarData() { string connection = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; string SQL = string.Empty; SQL = ("SELECT M.Id_Materia, M.Nombre FROM Materias M, CursosMaterias cm WHERE cm.id_Materia = M.Id_Materia AND cm.id_Curso = @View"); comando.CommandType = CommandType.Text; cnn.Open(); comando.Parameters.Clear(); comando.Parameters.AddWithValue("@View", (ViewState["idCurso"])); Adaptador.Fill(tabla); GridInscMaterias.DataSource = tabla; GridInscMaterias.DataBind(); cnn.Close(); } protected void GridInscMaterias_SelectedIndexChanged(object sender, EventArgs e) { } protected void ButtonTodas_Click(object sender, EventArgs e) { foreach (GridViewRow dgi in GridInscMaterias.Rows) { CheckBox myCheckBox = dgi.Cells[0].Controls[1] as CheckBox; if (myCheckBox != null) { { ViewState["idMateria"] = GridInscMaterias.DataKeys[dgi.RowIndex][0].ToString(); { string cadenaConexion = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; cnn.Open(); string SQL = string.Empty; SQL = ("SELECT id_cursoMateria From CursosMaterias cm Where cm.id_Curso = @idCurso AND cm.id_Materia = @idMateria"); ViewState["idCursoMateria"] = SQL; string sql = string.Empty; sql = @"INSERT INTO AlumMatCursos (Id_Alumno, id_cursoMateria) VALUES (@idAlumno, @idcurMat)"; cmd.Parameters.AddWithValue("@idCurso", (ViewState["idCurso"])); cmd.Parameters.AddWithValue("@idMateria", (ViewState["idMateria"])); cmd.Parameters.AddWithValue("@idAlumno", (ViewState["idAlumno"])); cmd.Parameters.AddWithValue("@idcurMat", (ViewState["idCursoMateria"])); cmd.ExecuteNonQuery(); cnn.Close(); lblMensaje.Text = "Se registraron correctamente en BD!"; } } } } } protected void GridAlumno_SelectedIndexChanged(object sender, EventArgs e) { // Se obtiene la fila seleccionada del gridview GridViewRow row = GridAlumno.SelectedRow; // Obtengo el id de la entidad que se esta editando // en este caso de la entidad Curso ViewState["idAlumno"] = Convert.ToInt32(GridAlumno.DataKeys[row.RowIndex].Value); } } }