Problema con gridview y textbox

Estoy haciendo un proyecto en capas (CAPADATOS-CAPAPRESENTACION) y una BD en sql server2005 y la web en vs.net 2005
en la BD tengo un proc. Almacenado con un select a la tabla clientes
en la capadatos una función para ejecutar el proc. Almacenado
en la página en el evento load el siguiente código:
Try
Me.GridView1.DataSource = Capadatos.MetodosClientes.listarCliente
Me.GridView1.DataBind()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Hasta este punto todo esta bien al ejecutar la página el gridview se rellena correctamente, y lo que hago es seleccionar una fila del gridview y el contenido de cada celda mostrarlo en un textbox respectivo mediante este código
Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged
txtcodigo.Text = Me.GridView1.SelectedRow.Cells(1).Text
txtnombre.Text = CStr(Me.GridView1.SelectedRow.Cells(2).Text)
txtdireccion.Text = CStr(Me.GridView1.SelectedRow.Cells(3).Text)
End Sub
Con ese código logro pasar los datos a los textbox, y si quiero selecciono otra fila y funciona, PERO:
Si alguna celda tiene en el dato que contiene la letra Ñ esta se muestra como un grupo de caracteres ejemplo (IBÁÑEZ -en el textbox se muestra así- IBÁÑEZ)
Esto me genera error al intentar seleccionar otra fila, me da un error con este mensaje:
Se detectó un posible valor Request.Form peligroso en el cliente (txtdireccion="...ACINTO IBAÑEZ S/N - PQUE....").
Quisiera ayuda con esto, como hago para que al seleccionar una fila del gridview la letra ñ se muestre normal y no en un grupo de caracteres.

1 Respuesta

Respuesta
1
Coloca la columna en particular de nombre y dirección en htmlencode = false
Gracias por contestar mi pregunta y disculpa la molestia de pedirte una aclaración, pero me podrías decir en donde coloco esa propiedad htmlencode=false, por que no lo se, y en las propiedades del gridview no sale, me imagino que debe ser en el código, pero te agradecería que me pusieras un ejemplo o algo así.
Gracias
Cópiame el código y te digo en donde... depende de la estructura es la localización.
LA TABLA CLIENTES: código-nombre-dirección-etc...
PROC ALMACENADO:sp_listar_clientes>>select * from clientes
---------------------------------------------------------------------
En la clase metodosclientes:
'METODO PARA LISTAR CLIENTE
Public Shared Function listarCliente() As DataTable
Try
Using cn As New SqlConnection(My.Settings.conex)
Using dtaDatos As New SqlDataAdapter("sp_listar_clientes", cn)
Dim dt As New DataTable
dt.Clear()
dtaDatos.Fill(dt)
Return dt
End Using
End Using
Catch ex As Exception
Throw ex
End Try
End Function
--------------------------------------------------------------
EN LA PAGINA:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Try
Me.GridView1.DataSource = Capadatos.MetodosClientes.listarCliente
Me.GridView1.DataBind()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged
txtcodigo.Text = Me.GridView1.SelectedRow.Cells(1).Text
txtnombre.Text = CStr(Me.GridView1.SelectedRow.Cells(2).Text)
txtdireccion.Text = CStr(Me.GridView1.SelectedRow.Cells(3).Text)
End Sub
----------------------------
Como le puse en la explicación, los datos cargan el el gridview y al seleccionar una fila se muestran en los textbox correspondiente a cada campo de la tabla, el problema es si algún dato tiene la letra Ñ, es ahí donde genera un error.
Espero que sean datos suficientes, gracias
Aquí es estas lineas debes colocarle al datatable un arreglo de columnas. DtaDatos. Fill(dt)
Return dt
Ejemplo.
Dim dt as new datatable
dim dc1 as new datacolumn
dc1.type = string
dc1.htmlencode= false.
Dt. Columns. Add(dc1)
Y luego retornar el dt.
Debes leer sobre los parámetros que acepta las columnas del datatable ya que lo estoy haciendo de pura memoria.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas