protected override void CellContentClick(int column, int row) { switch (Preguntas_Grid.Columns[column].Name) { case "Ordenar_BT": { OrdenarPreguntasInputForm form = new OrdenarPreguntasInputForm(true, row + 1); form.SetSourceData(Entity, Preguntas_Grid.Rows.Count); form.ShowDialog(); RellenaPreguntas(); } break; case "Ver_BT": { //Pregunta.OpenSession(); string memo = string.Empty; foreach (Pregunta_Examen item in Entity.Pregunta_Examens) { memo += item.OidPregunta.ToString() + ","; } if (memo != string.Empty) { memo = memo.Substring(0, memo.Length - 1); } PreguntaList preguntas = PreguntaList.GetPreguntasByList(memo); PreguntaInfo info = (PreguntaInfo)Preguntas_Grid.Rows[row].DataBoundItem; PreguntasViewForm form = new PreguntasViewForm(info.Oid, preguntas, true); form.ShowDialog(); } break; case "Editar_BT": { string memo = string.Empty; foreach (Pregunta_Examen item in Entity.Pregunta_Examens) { memo += item.OidPregunta.ToString() + ","; } if (memo != string.Empty) { memo = memo.Substring(0, memo.Length - 1); } Preguntas preguntas = Preguntas.GetPreguntasByList(memo, _entity.SessionCode); Preguntas ordenadas = Preguntas.NewList(); PreguntaInfo info = (PreguntaInfo)Preguntas_Grid.Rows[row].DataBoundItem; //se ordenan las preguntas para que se vayan mostrando en el mismo orden que en el examen foreach (Pregunta_Examen item in _entity.Pregunta_Examens) { ordenadas.AddItem(preguntas.GetItem(item.OidPregunta)); } Pregunta activa = ordenadas.GetItem(info.Oid); SortedBindingList <Pregunta> sorted = Preguntas.SortList(ordenadas, "Codigo", ListSortDirection.Ascending); PreguntasEditForm form = new PreguntasEditForm(activa, sorted, true); form.ShowDialog(); //se recarga la lista de preguntas a seleccionar para que estén actualizadas PreguntasModulo = PreguntaList.GetPreguntasModulo(_entity.OidModulo, _entity.MemoPreguntas); RellenaPreguntas(); //preguntas.CloseSession(); ordenadas.CloseSession(); } break; case "Eliminar_BT": { DialogResult result; result = MessageBox.Show("¿Está seguro que desea eliminar la pregunta seleccionada?", "Aviso", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { //string memo_preguntas = Entity.MemoPreguntas; //int pos = 0; //long oid_eliminada = ((PreguntaInfo)Preguntas_Grid.Rows[row].DataBoundItem).Oid; //string[] lista = Entity.MemoPreguntas.Split(';'); //Entity.MemoPreguntas = string.Empty; //foreach (string oid in lista) //{ // try // { // long oid_pregunta = Convert.ToInt32(oid); // if (oid_pregunta != oid_eliminada) // Entity.MemoPreguntas += oid_pregunta + ";"; // else // { // Pregunta item = _preguntas.GetItem(oid_pregunta); // item.Reservada = false; // } // } // catch // { // continue; // } //} foreach (Pregunta_Examen item in Entity.Pregunta_Examens) { if (item.OidPregunta == ((PreguntaInfo)Preguntas_Grid.Rows[row].DataBoundItem).Oid) { Entity.Pregunta_Examens.Remove(item); break; } } //while (memo_preguntas != string.Empty) //{ // string pregunta; // int index = memo_preguntas.IndexOf(";"); // pregunta = memo_preguntas.Substring(0, index + 1); // memo_preguntas = memo_preguntas.Substring(index + 1); // if (pos != row) // Entity.MemoPreguntas += pregunta; // else // { // int l = pregunta.Length; // Pregunta p = _modulo.Preguntas.GetItem(Convert.ToInt64(pregunta.Substring(0, l - 1))); // p.Reservada = false; // } // pos++; //} RellenaPreguntas(); } } break; } }
/// <summary> /// Implementa Save_button_Click /// </summary> protected override void SaveAction() { if (_entity.Texto == string.Empty) { MessageBox.Show("El texto de la pregunta no puede estar en blanco."); return; } if (_entity.Tipo == string.Empty) { MessageBox.Show("Debe seleccionar el tipo de pregunta."); return; } if (((ComboBoxSource)Tema_CB.SelectedItem).Oid == 0 || Datos_Temas.Current == null) { MessageBox.Show("Debe seleccionar un tema válido"); } else { _entity.FechaAlta = DateTime.Now; _entity.FechaDisponibilidad = DateTime.Now; _entity.FechaPublicacion = DateTime.Today; _entity.FechaUltimoExamen = DateTime.Today.AddMonths(-6); Historia historia = Historia.NewChild(_entity); historia.Fecha = DateTime.Now.Date; historia.Hora = DateTime.Now; historia.Texto = "Pregunta creada por " + AppContext.User.Name; _entity.Historias.AddItem(historia); if (SaveObject()) { //Si la pregunta tiene imagen, se renombra después de guardar el objeto //con el Oid asignado por la base de datos y se vuelve a guardar if (_entity.Imagen != string.Empty || _entity.ModeloRespuesta != string.Empty) { if (_entity.Imagen != string.Empty) { SaveImage(true); } if (_entity.ModeloRespuesta != string.Empty) { _entity.ModeloRespuesta = _entity.Oid.ToString("00000") + "_" + ModeloRespuestaBrowser.SafeFileName; File.Copy(ModeloRespuestaBrowser.FileName, moleQule.Library.Application.AppController.MODELOS_PREGUNTAS_PATH + _entity.ModeloRespuesta, true); } SaveObject(); } _entity.CloseSession(); _entity.SessionCode = _lista.SessionCode; _entity.MarkItemChild(); _lista.AddItem(_entity); _action_result = DialogResult.OK; Close(); } else { MessageBox.Show("No se ha podido crear la pregunta.", "Aviso"); } } }