Un "problema" interesante es el del tratamiento de tildes y eñes cuando estos vienen de un campo de un grid por ejemplo o de cualquier control que tenga habilitado el htmlencode. Si no les pasó pueden generar el error haciendo lo siguiente
- Coloquen un textbox en la pantalla y llamenlo txtFilaDelGrid
- Coloquen un segundo textbox y llamenlo txtCelda
- Coloquen un botón
- Creen un GridView que toma datos de una tabla por ejemplo, asegúrense que los datos tienen "ñ" y tildes para que vean el problema
- Programemos el evento click de botón agragandole lo siguiente
me.txtCelda.text=me.GidView1.rows(cint(me.txtFilaGrid.text)).cells(3).text
Ojo fijense que coloqué 3 en la celda, remplacen eso por la celda en la que tienen las "ñ" o tildes - Corran la aplicacion ,luego en el textbox txtFilaGrid escriban el numero de linea que tiene texto con "ñ" o tildes, luego presionen el botón y verán lo que sale en él
Para corregir esto la solución es demaciado fácil pero la verdad que no muy "visible", bueno lo único que hay que hacer es colocar la propiedad HTMLEnCode en falso para la columna del grid en la cual están los datos "problemáticos" Lo que ocurre es que es cuando esta propiedad está habilitada el contenido del control se toma como si fuese html y no texto plano lo cual deriva en la traducción de las "ñ" y tildes.
Salu2
Sergio


Buena explicación solo falto, como cambiar la propiedad htmlencode, sería algo así dentro de las columnas del Gridview en el código HTML
ResponderEliminar<asp:BoundField DataField="campo" HtmlEncode="False" />
o bien hacerlo con algún Editor como Visual Studio. Tambien sería bueno una breve explicación del riesgo de deshabilitar el htmlencode
A mi me funcionó excelente!!!
ResponderEliminarmaestro!!
ResponderEliminarme salvaste de un gran problema...
Excelente! creo que mejor de daña
ResponderEliminarExcelente! creo que mejor de daña
ResponderEliminarMe alegro que les sirva, la verdad que es un "problemita" que si bien es facil de arreglar, no es tan facil hallar la solución
ResponderEliminarSalu2 y gracias
Sergio
Que buen apunte, tenia varios días con el problemita y hasta que lo pude solucionar.
ResponderEliminarMuchas Gracias desde Medellín-Colombia
APORTAZO!
ResponderEliminarno se imagina lo que busque para solucionar eso.
gracias!
gracias carnal de sacaste de un apuro.
ResponderEliminary que pasa si viene el resultado desde un webrequest y lo quieres poner en un string? es una duda, si alguien sabe, porfa.
ResponderEliminarGracias de ante mano y buen aporte.
Solamente una duda: en caso de que cargues las columnas de forma dinámica cómo sería el código?? Pues desde el html no lo puedo hacer
ResponderEliminarhe visto la función adecuada para cambiar la codificación: Me.TextBox1.Text = HttpUtility.HtmlDecode(Me.GridView1.SelectedRow.Cells(1).Text). Así nos aseguramos de que el html está bien codificado y el cuadro de texto también.
ResponderEliminarGracias!
ResponderEliminarDemasiado bueno el aporte, nos ayudaste montones porque acá en la oficina teníamos ese problema y no encontrábamos la solución. Mil gracias!!
ResponderEliminarTengo problema con la subida de archivos que tiene Ñ me sale un simbolo extraño
ResponderEliminary como subes el archivo?....
ResponderEliminarGracias me salvaste la vida, EXcelente
ResponderEliminarAmérico autentico: (made in Bolivian) Muchisimas gracias, ese tipo de aportes son los q valen la pena.
ResponderEliminarHola man gracias te estoy muy agradecido por tu aporte, a veces estos detallitos son los mas complicados de solucionar.
ResponderEliminarBien profesor..
ResponderEliminarAquí hay un código más simplificado usando extensiones
ResponderEliminarpublic static string QuitarDiacriticos(this string cadena)
{
StringBuilder sb = new StringBuilder();
cadena.Normalize(NormalizationForm.FormD).ToCharArray().ToList()
.ForEach(caracter => sb.Append((CharUnicodeInfo.GetUnicodeCategory(caracter) != UnicodeCategory.NonSpacingMark) ? caracter.ToString() : ""));
return (sb.ToString().Normalize(NormalizationForm.FormC));
}
muy buena aportación
ResponderEliminarGracias
Gracias por compartir !!
ResponderEliminarsuperior a dracula chato!!! funciona genial!
ResponderEliminarAmigos una duda y disculpen la molestia. Los Gridview que estoy utilizando son con columnas autogeneradas. De manera que en el grid no tengo columnas para poner el HTMLEnCode en false. Traté en la declaración del grid pero no lo reconoce, les agradezco si me dicen que hacer en este caso.
ResponderEliminarhola
ResponderEliminarlo que tenes q hacer es programaar en el codeBehind algo similar a esto
Dim dgc As BoundField
dgc= Me.GridView1.Columns(0)
dgc.HtmlEncode = False
eso lo deberias hacr para las columnas que desees, en el ejemplo arriba quito el htmlEncode para la columna 0
espero te sirva
Mas de medio dia buscando esto, Gracias compañero funcional OK!!
ResponderEliminarExcelente, ya tenia unas horas buscando el cmo solucionarlo y gracias a ti quedo a ala perfeccion...
ResponderEliminargracias...
Perfecto Dannyseins muchas gracias, ese fue el que me sirvio para lo que necesitaba
ResponderEliminarGRACIAS!!
ResponderEliminarprueben con !
ResponderEliminarPage.Server.HtmlDecode(Me.dgvProductos.Rows(Me.dgvProductos.SelectedIndex).Cells(2).Text)
Para los que tienen Gridview con columnas dinámicas, pueden usar
ResponderEliminarServer.HtmlDecode (strig). Att. ronixjdiaz
Para quienes utilizan Gridview con columnas dinámicas, pueden utilizar Server.HtmlDecode(string).
ResponderEliminarExcelente aporte. Maestro!
ResponderEliminaraportazo
ResponderEliminarGracias por la ayuda.
ResponderEliminarMarceloXL
que grande!!! Gracias, que solución tan elegante y sencilla
ResponderEliminar