none
Ayuda Como Guarda Un RichTextBox Con Texto Enriquecido En Mysql RRS feed

  • Pregunta

  • Buenas tardes compañeros programadores, mi duda es como lograr poder guardar un richtectbox que contiene texto enriquecido como negritas y subrayado italic en una tabla de mysql para posteriormente poder llamar la información y que siga el texto tal cual se guardo.

    Juega Contra El Mejor Muere Como Los Demas

    miércoles, 14 de agosto de 2019 2:11

Todas las respuestas

  • El truco para esto es que en lugar de guardar (y luego recuperar) el .Text del RichTextbox, lo que tienes que salvar y luego recuperar es el valor de la propiedad .Rtf del RichTextBox. Por lo demás todo el código es el mismo que usarías si estuvieses salvando el .Text de cualquier textbox. La propiedad .Rtf es un String que se salva y recupera en base de datos con normalidad igual que cualquier otro string. Dentro de ese string hay una serie de códigos que son los que indican la negrita, cursiva, etc.
    miércoles, 14 de agosto de 2019 8:00
    Moderador
  • Hola que tal, muchas gracias por responder, te comento estuve investigando sobre el tema  he podido ir comprendiendo un poco sobre el tema, te dejo un ejemplo  de lo que quiero hacer y me si me puedes comentar que en que estoy mal.

    

    Esta es la imagen de mi RichTextbox que se llama "RichTextBoxDescripcion", como se puede observar tiene subrayado y  negritas también algo que tengo duda es como se puede guardar una imagen que este dentro del RichtextBox, pero bueno continuando con el tema principal yo guardo la información de esta forma.

    //ESTE ES MI METODO PARA GUARDAR Y ESTE METODO ESTA DENTRO DE UNA CLASE DE NOMBRE: ClassOrdenAltaDal 

           

     public static int Agregar(ClassOrdenAltaC pNOrden)
            {

                int retorno = 0;
                MySqlCommand comando = new MySqlCommand(string.Format("Insert  into   NUEVA_ORDEN (NUMERO_DE_SERVICIO,CLIENTE,DESCRIPCION,EMBARCACION,LUGAR,FECHA_DE_SOLICITUD,FECHA_DE_CIERRE ,ESTATUS,NUMERO_DE_VISITA,NUMERO_DE_ORDEN_DE_SERVICIO,CARTA_DE_CIERRE,CERTIFICADO,SERVICIO_RAIZ,TECNICO_DE_APERTURA,TECNICO_DE_CIERRE,TIPO_DE_SERVICIO ) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}')",
                pNOrden.NUMERO_DE_SERVICIO, pNOrden.CLIENTE, pNOrden.DESCRIPCION, pNOrden.EMABARCACION, pNOrden.LUGAR, pNOrden.FECHA_DE_SOLICITUD, pNOrden.FECHA_DE_CIERRE, pNOrden.ESTATUS, pNOrden.NUMERO_DE_VISITA, pNOrden.NUMERO_DE_ORDEN_DE_SERVICIO, pNOrden.CARTA_DE_CIERRE, pNOrden.CERTIFICADO,pNOrden.SERVICIO_RAIZ,pNOrden.TECNICO_DE_APERTURA, pNOrden.TECNICO_DE_CIERRE, pNOrden.TIPO_DE_SERVICIO), BdComun.ObtenerConexion());

                retorno = comando.ExecuteNonQuery();

                return retorno;
            }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                                                  

    ClassOrdenAltaC pDato = new ClassOrdenAltaC();//AQUI INSTANCIO LA CLASE DONDE TENGO LOS PARAMETROS DE ENVIO DEL CONSTRUCTOR

    pDato.DESCRIPCION = RichTextBoxDescripcion.Rtf;//AL GUARDAR LA INFOMARCION LA GUARDO CON .RTF


     int resultado = ClassOrdenAltaDal.Agregar(pDato); // SI TODO  SALE BIEN PASO LOS DATOS DEL CONSTRUTOR A LA CLASE DE GUARDADO DE MI BASE DE DATOS

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    AL GUARDAR Y TRAER LA IINFORMACION ME LA MUESTRA DE LA SIGUIENTE MANERA

    ACLARO NO SE SI LA FORMA DE GUARDAR COMO LO ESTOY HACIENDO ESTA BIEN O MAL Y NO ENTIENDO POR QUE ME MUESTRA ASI EL CONTENIDO EL CÓDIGO QUE TRAE DE VUELTA LA INFORMACIÓN LA TENGO DE LA SIGUIENTE FORMA.

     RichTextBoxDescripcion.Text = (v["DESCRIPCION"].ToString());///LO QUE ESTE EN LA COLUMNA "DESCRIPCION"  CUANDO CONCIDA  LO ADOPTE EL  RichTextBoxDescripcion.Text 

    SI PUDIERAS ASESORARME TE LO VOY AGRADECER. IGUAL LA DUDA DE LA IMAGEN SE PUEDE GUARDAR CON EL RTF?



    Juega Contra El Mejor Muere Como Los Demas

    jueves, 22 de agosto de 2019 17:27
  • AL GUARDAR Y TRAER LA IINFORMACION ME LA MUESTRA DE LA SIGUIENTE MANERA

    No hay más que ver la imagen de lo que te está trayendo para darse cuenta inmediatamente de cuál es el problema: estás salvando el .Rtf, pero cuando lo recuperas, en lugar de traerlo al .Rtf lo estás trayendo al .Text. Por eso se ve en pantalla el texto de la codificación rtf.

    Esto está bien:

     pDato.DESCRIPCION = RichTextBoxDescripcion.Rtf;

    Pero esto está mal:

     RichTextBoxDescripcion.Text = (v["DESCRIPCION"].ToString());

    Tiene que ser así:

     RichTextBoxDescripcion.Rtf = (v["DESCRIPCION"].ToString());

    jueves, 22 de agosto de 2019 18:31
    Moderador
  • Antes que nada gracias por segir al pendiente, realice lo que me has sugerido y surgió esto después de aplicar lo que me comentaste

    estuve leyendo y mencionan que una técnica sobre crear un archivo antes y convertirlo en un array y luego guardarlo y para traerlo cargar el archivo y devolver el array pero en mi caso encuentro un inconveniente con esta técnica ya que es un sistema para múltiples usuarios que pueden interactuar con la información y lo mas sano para mi es logra guardarlo directamente en la base de datos con lo estoy haciendo y traerlo de vuelta si crear ningun array o documento. pero lamentablemente ese paso no lo he logrado :(


    Juega Contra El Mejor Muere Como Los Demas

    viernes, 23 de agosto de 2019 4:45
  • Ese error indica que no le estás asignando a la propiedad .Rtf exactamente lo mismo que antes salvaste desde la propiedad .Rtf. En algún punto durante el circuito de salvar y recuperar estás alterando la información y no recuperas exactamente lo mismo. O bien puede ser que hayas navegado a otro registro diferente que tenías en la base de datos salvado previamente como .Text y no como .Rtf. O tal vez alguno que tiene un NULL en ese campo.

    Para cerciorarte, pon un punto de ruptura con el debugger justo antes de asignar el dato al Rtf y examina el valor de la cadena. Verifica que es un RTF correcto igual al que inicialmente grabaste (que también puedes capturar desde el debugger).

    Te aseguro que el mecanismo está probadísimo y funciona a la perfección, siempre que al leer el dato leas exactamente lo mismo que antes habías salvado, sin alterarlo de ninguna manera, y que se haya salvado desde .Rtf y no otra cosa distinta. No hace falta salvar ningún archivo como mencionabas; el Rtf es un simple string y se puede leer y grabar en un campo de texto de la base de datos sin problema.

    viernes, 23 de agosto de 2019 5:25
    Moderador