protected void _gridHorario_RowCommand(object sender, GridViewCommandEventArgs e) { Control controlDesplegable; // Label que se encuentra en cada celda del grid, se utiliza para lo que se va a desplegar en la celda Control controlEditable; // Textbox que se enceuntra en cada celda del grid, se utiliza para poder editar la celda _btnGuardarHorario.Enabled = true; _controladorHorario = new ControladorHorario(); if ((int)ViewState["filaEditada"] > -1) // Verificar si hay alguna celda editada para guardar lo que hay en esta { String textoTurnoViejo = ((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[1]).Text; String textoTurnoNuevo = ((TextBox)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[3]).Text; int idTurno = -1; if ((textoTurnoViejo.Equals("")) && (!textoTurnoNuevo.Equals(""))) // Un turno nuevo { char dia = ' '; switch ((int)ViewState["columnaEditada"]) { case 2: // Lunes dia = 'L'; break; case 3: // Martes dia = 'K'; break; case 4: // Miércoles dia = 'M'; break; case 5: // Jueves dia = 'J'; break; case 6: // Viernes dia = 'V'; break; case 7: // Sábado dia = 'S'; break; case 8: // Domingo dia = 'D'; break; } String hora = ((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[1].Controls[1]).Text; String[] horas = hora.Split(' '); _realizoCambio = _controladorHorario.insertarTurno(dia, horas[0], horas[2], textoTurnoNuevo, (int)ViewState["idHorario"]); if (_realizoCambio) { _lblMensaje.Text = "Se ha insertado con éxito el turno"; _imgMensaje.ImageUrl = "~/Imagenes/ok.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } else { _lblMensaje.Text = "Error al crear el nuevo turno"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } } else if ((!textoTurnoNuevo.Equals(textoTurnoViejo)) && (!textoTurnoNuevo.Equals(""))) // Si cambio el dato del turno { String hola = ((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[5]).Text; idTurno = Convert.ToInt32(hola); _realizoCambio = _controladorHorario.modificarTurno(idTurno, textoTurnoNuevo); if (_realizoCambio) { _lblMensaje.Text = "Se ha cambiado el turno con éxito"; _imgMensaje.ImageUrl = "~/Imagenes/ok.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } else { _lblMensaje.Text = "Error al modificar el turno"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } } else if ((!textoTurnoViejo.Equals("")) && (textoTurnoNuevo.Equals(""))) // Si elminó el dato del turno { idTurno = Convert.ToInt32(((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[5]).Text); _realizoCambio = _controladorHorario.borrarTurno(idTurno); if (_realizoCambio) { _lblMensaje.Text = "Se ha borrado el turno con éxito"; _imgMensaje.ImageUrl = "~/Imagenes/ok.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } else { _lblMensaje.Text = "Error al intentar borrar el turno"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } } ((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[1]).Text = textoTurnoNuevo; _gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[1].Visible = true; _gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[3].Visible = false; } // Obtener la fila y columna de la celda int fila = int.Parse(e.CommandArgument.ToString()); int columna = int.Parse(Request.Form["__EVENTARGUMENT"]); // Obtener el label de la celda (control desplegable) y ocultarlo controlDesplegable = _gridHorario.Rows[fila].Cells[columna].Controls[1]; controlDesplegable.Visible = false; // Obtener el textbox de la celda (control editable) y hacelo visible, para que se pueda utilizar controlEditable = _gridHorario.Rows[fila].Cells[columna].Controls[3]; ((TextBox)controlEditable).Text = ((Label)controlDesplegable).Text.Replace("<br/>", " "); controlEditable.Visible = true; // Setear el foco al control editable ClientScript.RegisterStartupScript(GetType(), "SetFocus", "<script>document.getElementById('" + controlEditable.ClientID + "').focus();</script>"); // Seleccionar el texto del control desplegable, esto para que este en foco if (controlEditable is TextBox) { ((TextBox)controlEditable).Attributes.Add("onfocus", "this.select()"); } ViewState["filaEditada"] = fila; // Guardas la fila de la celda que se editó ViewState["columnaEditada"] = columna; // Guardar la columna de la celda que se editó }
protected void _btnGuardarHorario_Click(object sender, EventArgs e) { _sesion = new Sesion(); _cookieActual = _sesion.verificarValidez(Request.Cookies["PS"]); if (_cookieActual == null) // Si la cookie expira redirecciona a la pantalla de Login Response.Redirect("../Autentificacion/Login.aspx"); // else // Volver a crear la cookie en el cliente, con el nuevo tiempo de expiración Response.SetCookie(_cookieActual); _controladorHorario = new ControladorHorario(); String textoTurnoViejo = ((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[1]).Text; String textoTurnoNuevo = ((TextBox)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[3]).Text; int idTurno = -1; if ((textoTurnoViejo.Equals("")) && (!textoTurnoNuevo.Equals(""))) // Un turno nuevo { char dia = ' '; switch ((int)ViewState["columnaEditada"]) { case 2: // Lunes dia = 'L'; break; case 3: // Martes dia = 'K'; break; case 4: // Miércoles dia = 'M'; break; case 5: // Jueves dia = 'J'; break; case 6: // Viernes dia = 'V'; break; case 7: // Sábado dia = 'S'; break; case 8: // Domingo dia = 'D'; break; } String hora = ((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[1].Controls[1]).Text; String[] horas = hora.Split(' '); _realizoCambio = _controladorHorario.insertarTurno(dia, horas[0], horas[2], textoTurnoNuevo, (int)ViewState["idHorario"]); if (_realizoCambio) { _lblMensaje.Text = "Se ha insertado con éxito el turno"; _imgMensaje.ImageUrl = "~/Imagenes/ok.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } else { _lblMensaje.Text = "Error al crear el nuevo turno"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } } else if ((!textoTurnoNuevo.Equals(textoTurnoViejo)) && (!textoTurnoNuevo.Equals(""))) // Si cambio el dato del turno { idTurno = Convert.ToInt32(((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[5]).Text); _realizoCambio = _controladorHorario.modificarTurno(idTurno, textoTurnoNuevo); if (_realizoCambio) { _lblMensaje.Text = "Se ha cambiado el turno con éxito"; _imgMensaje.ImageUrl = "~/Imagenes/ok.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } else { _lblMensaje.Text = "Error al modificar el turno"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } } else if ((!textoTurnoViejo.Equals("")) && (textoTurnoNuevo.Equals(""))) // Si elminó el dato del turno { idTurno = Convert.ToInt32(((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[5]).Text); _realizoCambio = _controladorHorario.borrarTurno(idTurno); if (_realizoCambio) { _lblMensaje.Text = "Se ha borrado el turno con éxito"; _imgMensaje.ImageUrl = "~/Imagenes/ok.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } else { _lblMensaje.Text = "Error al intentar borrar el turno"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } } ((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[1]).Text = textoTurnoNuevo; _gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[1].Visible = true; _gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[3].Visible = false; _btnGuardarHorario.Enabled = false; }