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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 Tomas
08/04/2008 - 09:34 | Informe spam
Estoy usando el control DataGridView dentro de una aplicación Windows Form
y no veo este evento que me mencionas.

Me parece que tu haces referencia al control GridView
http://msdn2.microsoft.com/es-es/li...s.gridview(VS.80).aspx .

Yo buscaba algo parecido al evento
http://msdn2.microsoft.com/es-es/li...eeded.aspx
cuando se trabaja en modo virtual con el control DataGridView.
Respuesta Responder a este mensaje
#3 Sashka
08/04/2008 - 16:43 | Informe spam
Usa el CellFormating, por ejemplo...

private void dataGridView1_CellFormatting(object sender,
DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 0)
{
if (e.Value !=null && e.Value.ToString() == "Bike")
e.Value = "bicicleta";
}
}

Sashka

"Tomas" escribió en el mensaje
news:
Estoy usando el control DataGridView dentro de una aplicación Windows Form
y no veo este evento que me mencionas.

Me parece que tu haces referencia al control GridView
http://msdn2.microsoft.com/es-es/li...s.gridview(VS.80).aspx .

Yo buscaba algo parecido al evento
http://msdn2.microsoft.com/es-es/li...eeded.aspx
cuando se trabaja en modo virtual con el control DataGridView.



Respuesta Responder a este mensaje
#4 Tomas
08/04/2008 - 20:34 | Informe spam
No me funciona porque, la primera vez que estas en una celda, se
desencripta, las siguientes, ya no debe desencriptar, porque la celda ya
esta desencriptada.

Creo que cambiaré el sistema y en lugar de usar un DataGridView enlazado a
un DataSet, usaré quizás, un control ListView y veré como hago la lectura y
actualización de la base de datos.

"Sashka" escribió en el mensaje
news:
Usa el CellFormating, por ejemplo...

private void dataGridView1_CellFormatting(object sender,
DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 0)
{
if (e.Value !=null && e.Value.ToString() == "Bike")
e.Value = "bicicleta";
}
}

Sashka

"Tomas" escribió en el mensaje
news:
Estoy usando el control DataGridView dentro de una aplicación Windows
Form y no veo este evento que me mencionas.

Me parece que tu haces referencia al control GridView
http://msdn2.microsoft.com/es-es/li...s.gridview(VS.80).aspx .

Yo buscaba algo parecido al evento
http://msdn2.microsoft.com/es-es/li...eeded.aspx
cuando se trabaja en modo virtual con el control DataGridView.







email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida