Cambiar datos de un DataGrid antes de visualizarse.

07/04/2008 - 14:41 por Tomas | Informe spam
Hola a todos.

Tengo que leer datos de una tabla en SQL Server 2000, los datos están
encriptados.
Antes de mostrarlos en la rejilla, tengo que desencriptarlos y luego
mostrarlos.
¿Hay algún método que pueda usar para manipular los datos antes de
mostrarlos en la rejilla?

Gracias.
Tomás.
 

Leer las respuestas

#1 DarkSpy
07/04/2008 - 22:15 | Informe spam
On 7 abr, 08:41, "Tomas" wrote:
Hola a todos.

Tengo que leer datos de una tabla en SQL Server 2000, los datos están
encriptados.
Antes de mostrarlos en la rejilla, tengo que desencriptarlos y luego
mostrarlos.
¿Hay algún método que pueda usar para manipular los datos antes de
mostrarlos en la rejilla?

Gracias.
Tomás.



Hola, existen varias formas para hacer lo que buscas, particularmente
yo uso 2 casi siempre.
Una es usar el RowDataBound de la grilla y alli rescatar el dato que
quieres desencriptar y realizar la desencriptación, algo así:

protected void grdClientsGrid_RowDataBound(object sender,
GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
EClient objClient = (EClient)e.Row.DataItem;
objClient.Name = Desencriptar(objClient.Name);
}
}
Para éste ejemplo debes realizar el enganche del evento RowDataBound
desde la GridView.

La otra forma (no estoy seguro si funcionará en Windows Forms) es usar
Templates en tu grilla, de ésta forma para cada ítem de la grilla
puedes llamar rutinas específicas para (en tu caso) desencriptar un
elemento específico, algo así:

<asp:TemplateField HeaderText="Nombre" HeaderStyle-Width="10%">
<ItemTemplate>
<%# Desencriptar(DataBinder.Eval(Container.DataItem, "VchName"))%>
</ItemTemplate>
</asp:TemplateField>

Luego en el código del lado del servidor creas tu rutina Desencriptar
y procesas el dato, algo así:

protected string Desencriptar(object Nombre)
{
string strNombre = Nombre.ToString();
desencriptar...
return strNombre;
}

La primera opción debería funcionar en Asp.Net y Windows Forms, la
segunda seguro funciona en Asp.Net pero no se si funcionará el Windows
Forms, prueba y comenta.

Saludos.

Preguntas similares