Primeramete solamente arrastramos el GridView, se verá de esta menera:
Luego creamos las columnas que obtenemos del origen de datos:
Sub crearControles()
Try
grdGridView.Columns.Clear() 'Limpiamos las columnas del grid porque por cada postback se crean las columnas nuevamente.
agregarCommanColumn() 'Si necesitamos hacer uso del Select,New,Update,Delete
'Si necesitamos agregar template a nuestras colunas
'se utiliza para mostrar campos no editables y mostrar un label
Dim labelTemplate As New GridViewTemplate()
For Each column As DataColumn In dtOrigenDatos.Columns
Select Case column.ColumnName
Case "Id" 'las columnas que no necesitamos agregar al grid
'las columnas con propiedades especificas y para agregar el labeltemplate
'para las columnas no editables
Case "Columna1"
Dim txtColumn As New GridViewDataTextColumn()
txtColumn.Name = column.ColumnName
txtColumn.FieldName = column.ColumnName
txtColumn.Settings.HeaderFilterMode = HeaderFilterMode.CheckedList
txtColumn.Settings.AutoFilterCondition = AutoFilterCondition.Contains
txtColumn.EditFormSettings.Visible = DevExpress.Utils.DefaultBoolean.False
txtColumn.EditItemTemplate = labelTemplate
grdMontosLimites.Columns.Add(txtColumn)
Case "columna2"
Dim cmbColumn As New GridViewDataComboBoxColumn()
cmbColumn.Name = column.ColumnName
cmbColumn.FieldName = column.ColumnName
cmbColumn.Settings.HeaderFilterMode = HeaderFilterMode.CheckedList
cmbColumn.CellStyle.HorizontalAlign = HorizontalAlign.Center
cmbColumn.Width = 50
grdMontosLimites.Columns.Add(cmbColumn)
Case "Columna4" 'Para valores numéricos no editables
Dim txtColumn As New GridViewDataTextColumn()
txtColumn.Name = column.ColumnName
txtColumn.FieldName = column.ColumnName
txtColumn.Settings.HeaderFilterMode = HeaderFilterMode.CheckedList
txtColumn.Settings.AutoFilterCondition = AutoFilterCondition.Contains
txtColumn.PropertiesTextEdit.DisplayFormatString = "N2"
txtColumn.EditItemTemplate = labelTemplate
grdMontosLimites.Columns.Add(txtColumn)
Case Else 'Si con el mismo tipo de datos en este caso SpinEdit Editables
Dim spnColumn As New GridViewDataSpinEditColumn()
spnColumn.Name = column.ColumnName
spnColumn.FieldName = column.ColumnName
spnColumn.PropertiesSpinEdit.DisplayFormatString = "N2"
spnColumn.PropertiesSpinEdit.SpinButtons.ShowIncrementButtons = False
spnColumn.Settings.HeaderFilterMode = HeaderFilterMode.CheckedList
grdMontosLimites.Columns.Add(spnColumn)
End Select
Next
Catch ex As Exception
Throw ex
End Try
End Sub
Sub agregarCommanColumn()
If grdGridView.Columns.IndexOf(grdGridView.Columns("CommandColumn")) <> -1 Then
Return
End If
Dim col As New GridViewCommandColumn()
col.Name = "CommandColumn"
col.ShowSelectCheckbox = True
col.Caption = " "
col.ButtonType = ButtonType.Image
col.EditButton.Visible = True
col.EditButton.Image.Url = "~/images/note_edit.png"
col.CancelButton.Visible = True
col.CancelButton.Image.Url = "~/images/Cancel_Icon_64.png"
col.UpdateButton.Visible = True
col.UpdateButton.Image.Url = "~/images/data_floppy_disk.png"
col.VisibleIndex = 0
grdMontosLimites.Columns.Add(col)
End Sub
Por Ultimo hacemos nuestro llenado del GridView:
''' <summary>
''' Método para llenar un grid view devexpress
''' </summary>
''' <param name="grdControl">Control devexpress</param>
''' <param name="strCampoLlave">campos llave separado por coma</param>
''' <param name="objRecursoDeDato">objeto recurso para llenar el control</param>
''' <remarks></remarks>
Public Sub cargarGridView(ByVal grdControl As ASPxGridView, ByVal strCampoLlave As String, ByVal objRecursoDeDato As Object)
Try
With grdControl
.DataSource = objRecursoDeDato
.KeyFieldName = strCampoLlave
.DataBind()
End With
Catch ex As Exception
Throw ex
End Try
End Sub
Clase del GridViewTemplate:
Imports DevExpress.Web.ASPxGridView
Imports DevExpress.Web.ASPxEditors
Imports System.Web.UI
Imports System.Web.UI.WebControls
Public Class GridViewTemplate
Implements ITemplate
''' <summary>
''' Agrega label para campos no editables
''' </summary>
''' <remarks></remarks>
Private Function agregarLabel(ByVal strValor As Object) As ASPxLabel
Dim lbl As New ASPxLabel
lbl.Text = If(IsDBNull(strValor), "", strValor)
Return lbl
End Function
Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn
Dim strNombreColumna = TryCast(container, GridViewDataItemTemplateContainer).Column.FieldName
container.Controls.Add(agregarLabel(DataBinder.Eval(TryCast(container, GridViewDataItemTemplateContainer).DataItem, strNombreColumna)))
End Sub
End Class
Clase del GridViewTemplate:
Imports DevExpress.Web.ASPxGridView
Imports DevExpress.Web.ASPxEditors
Imports System.Web.UI
Imports System.Web.UI.WebControls
Public Class GridViewTemplate
Implements ITemplate
''' <summary>
''' Agrega label para campos no editables
''' </summary>
''' <remarks></remarks>
Private Function agregarLabel(ByVal strValor As Object) As ASPxLabel
Dim lbl As New ASPxLabel
lbl.Text = If(IsDBNull(strValor), "", strValor)
Return lbl
End Function
Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn
Dim strNombreColumna = TryCast(container, GridViewDataItemTemplateContainer).Column.FieldName
container.Controls.Add(agregarLabel(DataBinder.Eval(TryCast(container, GridViewDataItemTemplateContainer).DataItem, strNombreColumna)))
End Sub
End Class
Me podrias decir de donde obtienes strCampoLlave,objRecursoDeDato y grdControl
ResponderBorrarStrCampoLlave: es el nombre de la columna llave de tu tabla ejemplo: Tabla Estudiante. Llave: IdEstudiante.
ResponderBorrarobjRecursoDeDato: es el origen de datos, la consuta a la bases de datos que retorne un DataTable.
grdControl: es el nombre del control GridView.