viernes, septiembre 29, 2023

Como podemos ocultar una columna del DataGrid

Descargar Ejemplo DataGrid_OcultarColumna.zip

En algún momento en nuestras aplicaciones necesitaremos tener algun dato en el DataGrid, pero que este no se le muestre al usuario, ya sea por razones de seguridad, que el dato no sea relevante o que necesitemos ahorrar espacio en pantalla, o muchas otras mas. Para esto es que te explicamos como puedes agregarle esta propiedad a tu DataGrid.

DataGrid normal

DataGrid luego de utilizar la propiedad de ocultar columna, manteniendo los datos en el DataSource

La columna del DataGrid tiene una propiedad ColumnMapping a la cual le podemos definir el estado MappingType.Hidden

ds.Tables(nombre_tabla).Columns( _
nombre_columna_ocultar).ColumnMapping = MappingType.Hidden

Para hacer esto y tener un control personalizado vamos a crear la clase DataGridEx a la cual le vamos a copiar el siguiente código:

Imports System.ComponentModel
Imports System.Windows.Forms

Public Class DataGridEx
Inherits System.Windows.Forms.DataGrid

#Region » Windows Form Designer generated code «

'UserControl overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Private Sub InitializeComponent()
components = New System.ComponentModel.Container
End Sub

#End Region

'Procedimiento que puede ser invocado para ocultar ona columna
Public Sub OcultarColumna( _
ByVal nombre_columna_ocultar As String, _
Optional ByVal nombre_tabla As String = «»)

Try

If nombre_columna_ocultar.Trim.Length = 0 Then
Throw New Exception(«Debe indicar el nombre de la columna»)

Else

'Identificamos el tipo del objeto DataSet o DataTable
If Me.DataSource.GetType.Name = «DataTable» Then
Dim dt As New DataTable
dt = CType(MyBase.DataSource, DataTable)
MyBase.DataSource = Nothing
Me.DataSourceEx(nombre_columna_ocultar, nombre_tabla) = dt

ElseIf Me.DataSource.GetType.Name = «DataSet» Then
Dim ds As New DataSet
ds = CType(MyBase.DataSource, DataSet)
MyBase.DataSource = Nothing
Me.DataSourceEx(nombre_columna_ocultar, nombre_tabla) = ds

End If

End If
Catch ex As Exception
Throw ex
End Try
End Sub

Public Shadows Property DataSourceEx( _
Optional ByVal nombre_columna_ocultar As String = «», _
Optional ByVal nombre_tabla As String = «») As Object
Get
Return MyBase.DataSource
End Get
Set(ByVal Value As Object)

If nombre_columna_ocultar.Trim.Length > 0 Then

'Identificamos el tipo del objeto DataSet o DataTable
If Value.GetType.Name = «DataTable» Then
Dim dt As New DataTable
dt = Value
dt.Columns(nombre_columna_ocultar).ColumnMapping = MappingType.Hidden
MyBase.DataSource = dt

ElseIf Value.GetType.Name = «DataSet» Then
Dim ds As New DataSet
ds = Value

If nombre_tabla.Trim.Length > 0 Then
ds.Tables(nombre_tabla).Columns( _
nombre_columna_ocultar).ColumnMapping = MappingType.Hidden
MyBase.DataSource = ds
MyBase.DataMember = nombre_tabla

Else
ds.Tables(0).Columns( _
nombre_columna_ocultar).ColumnMapping = MappingType.Hidden
MyBase.DataSource = ds

End If

End If

Else
MyBase.DataSource = Value

If nombre_tabla.Trim.Length > 0 And Value.GetType.Name = «DataSet» Then
MyBase.DataMember = nombre_tabla
End If

End If
End Set
End Property

End Class

Una ves terminada esta clase podremos utilizarla en nuestro formulario, donde de una forma sencilla y práctica utilizamos nuestro propio DataGrid

Para enviarle los datos podemos hacerlo de varias formas, donde le podemos indicar desde el inicio cual tabla mostrar y también cual columna ocultar

'Cuando es dataset le podemos indicar el nombre de la tabla que queremos mostrar, datos son opcionales
Me.dg1.DataSourceEx(«Valor», «Prueba») = MyDataSet
'Si es datatable le indicamos la columna que queremos ocultar, dato es opcional
Me.dg1.DataSourceEx(«Valor») = dt
'Solo le indicamos la tabla que queremos mostrar
Me.dg1.DataSourceEx(nombre_tabla:=»Prueba») = MyDataSet
'Solo le enviamos la tabla como al DataSource normal
Me.dg1.DataSourceEx = dt

También podremos ya una ves cargados los datos indicarle cual colum queremos ocultar con la función

Me.dg1.OcuarColumna(«Valor», «Prueba»)

Descargar Ejemplo DataGrid_OcultarColumna.zip




Roy Rojashttp://www.dotnetcr.com
Con más de 20 años de experiencia en programación, experto en lenguajes .NET, VB, C#, ASP.NET, Xamarin, XCode, DBA en SQL Server. Creador de dotnetcr.com, sitio web para programadores en español. royrojas.com | dotnetcr.com | GitHub

Redes Sociales

2,736FansMe gusta
326SeguidoresSeguir

Popular esta semana

SQL Server

Cómo saber la fecha que se modificó un procedimiento almacenado

Poder saber cuales objetos o procedimientos almacenados se modificaron recientemente es muy útil principalmente en bases de datos donde varios desarroladores tienen acceso
SQL Server MERGE

MERGE en SQL Server para Insert, Delete y Update con dos tablas

Ejemplo práctico usando MERGE para sincronizar dos tablas, Insert, Update y Delete en un solo query. Válido para SQL SERVER 2008 o superior.
SQL Server

Format en SQL Server (Transact-SQL)

La función Format aplica desde SQL Server 2012 en adelante. Devuelve un valor con el formato previamente indicado. Se puede utilizar para definir el formato de una fecha y hora o para retornar un numero como varchar en un formato específico.

Últimos artículos

SQL Server MERGE

MERGE in SQL Server for Insert, Delete and Update with two tables

Practical example using MERGE to synchronize two tables, Insert, Update and Delete in a single query. Valid for SQL SERVER 2008 or...

Como crear una API REST con ASP.NET Core 6.0

Crear una API REST con C# en ASP.NET es un proceso sencillo y rápido que permite exponer un conjunto de recursos a...
Machine Learning & Python

Introducción a Machine Learning en Python

Machine Learning es una rama de la inteligencia artificial que se enfoca en el desarrollo de sistemas que pueden aprender de...
SQL Server MERGE

MERGE en SQL Server, como utilizarlo de forma sencilla

El comando MERGE en SQL Server se utiliza para combinar datos de varias tablas en una sola tabla. Es útil para actualizar...