Campos calculados en datagrid view

12/03/2007 - 16:45 por aydai | Informe spam
Hola a todos!!!

Vereis, tengo un datagrid view, al cual yo le asigno los valores asignandole
a su datasource, una tabla de un dataset ( no dejo editar el datagrid
directamente), el problema que tengo es que quiero crear una columna
calculada a partir de los campos de la table, pero sin cambiarlo en el
datatable. Es posible?? como puedo conseguirlo??

Gracias por todo.
 

Leer las respuestas

#1 Luis Miguel Blanco
12/03/2007 - 18:28 | Informe spam
Hola aydai

Para conseguir esta funcionalidad puedes añadir directamente a tu sentencia
SQL el campo calculado, o lo que puede resultar más potente, crear un objeto
columna de la clase DataGridViewTextBoxColumn, que añadirías a la colección
Columns del grid, y escribir el código del evento CellFormatting, donde
realizarías las operaciones necesarias para obtener el valor que quieres
mostrar en la nueva columna para cada registro.

En el siguiente bloque de código puedes ver un ejemplo similar, en el que
dentro del evento CellFormatting realizamos una operación con dos campos de
la consulta SQL, traspasando el resultado a la celda del campo calculado en
curso.

'/////////////////////////////
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim cnConexion As SqlConnection = New SqlConnection()
cnConexion.ConnectionString = "Data Source=localhost;" & _
"Initial Catalog=AdventureWorksDW;" & _
"Integrated Security=True"

Dim sSQL As String
sSQL = "select ProductKey,EnglishProductName,ListPrice,DealerPrice "
sSQL &= "from DimProduct "
sSQL &= "where listprice is not null"

Dim cmdComando As SqlCommand = New SqlCommand(sSQL, cnConexion)
Dim daAdaptador As SqlDataAdapter = New SqlDataAdapter(cmdComando)
Dim dsDatos As DataSet = New DataSet()
daAdaptador.Fill(dsDatos, "DimProduct")

Me.DataGridView1.DataSource = dsDatos
Me.DataGridView1.DataMember = "DimProduct"

Dim colDiferencia As DataGridViewTextBoxColumn = New
DataGridViewTextBoxColumn()
colDiferencia.HeaderText = "Diferencia precios"
colDiferencia.Name = "Diferencia"
Me.DataGridView1.Columns.Add(colDiferencia)
End Sub
'--
Private Sub DataGridView1_CellFormatting(ByVal sender As System.Object,
ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles
DataGridView1.CellFormatting
If Me.DataGridView1.Columns(e.ColumnIndex).Name = "Diferencia" Then
e.Value = Me.DataGridView1.Rows(e.RowIndex).Cells("ListPrice").Value - _
Me.DataGridView1.Rows(e.RowIndex).Cells("DealerPrice").Value
End If
End Sub
'/////////////////////////////

Espero que te sirva de ayuda.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"" wrote:

Hola a todos!!!

Vereis, tengo un datagrid view, al cual yo le asigno los valores asignandole
a su datasource, una tabla de un dataset ( no dejo editar el datagrid
directamente), el problema que tengo es que quiero crear una columna
calculada a partir de los campos de la table, pero sin cambiarlo en el
datatable. Es posible?? como puedo conseguirlo??

Gracias por todo.



Preguntas similares