TelerikDeveloper.com

TelerikDeveloper.com

Telerik Grid Class

body header
Anchor directly to this post Joel 8/17/2011 3:43:22 PM

I'm very unhappy with the tool that Telerik uses to build the fields in its grids (it's about the only thing that I don't like about them, BTW). So, I decided just to build the grids manually in code. this grid class does the work.

 

Anchor directly to this post Joel 8/17/2011 3:43:42 PM

 

Imports Telerik.WinControls.UI
 
Public Class TelerikGrid
    
    Function createGridViewTextBoxColumn(ByVal strHeaderText As StringByVal strFieldName As String,
                                ByVal intMaxLength As Int16ByVal intWidth As Int16As GridViewTextBoxColumn
        Dim textBoxColumn As New GridViewTextBoxColumn()
        textBoxColumn.Name = strFieldName
        textBoxColumn.HeaderText = strHeaderText
        textBoxColumn.FieldName = strFieldName
        textBoxColumn.MaxLength = intMaxLength
        textBoxColumn.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft
        textBoxColumn.Width = intWidth
        Return textBoxColumn
    End Function
 
    Function createGridViewDecimalColumn(ByVal strHeaderText As StringByVal strFieldName As String,
                        ByVal strFormatString As StringByVal intWidth As Int16As GridViewDecimalColumn
        Dim col As New GridViewDecimalColumn()
        col.FormatString = strFormatString
        col.Name = strFieldName
        col.HeaderText = strHeaderText
        col.FieldName = strFieldName
        col.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft
        col.Width = intWidth
        col.ShowUpDownButtons = False
        col.DecimalPlaces = 5
 
        Return col
    End Function
 
    Function CreateGridViewComboBoxColumn(ByVal strHeaderText As StringByVal oDT As DataTable,
                    ByVal strValueMember As StringByVal strDisplayMember As String,
                    ByVal strFieldName As StringByVal intWidth As Int16As GridViewComboBoxColumn
        Dim col As GridViewComboBoxColumn = New GridViewComboBoxColumn
        col.Name = strFieldName
        col.HeaderText = strHeaderText
        col.DataSource = oDT
        col.ValueMember = strValueMember
        col.DisplayMember = strDisplayMember
        col.FieldName = strFieldName
        col.Width = intWidth
        'col.DataType = System.Guid
        Return col
    End Function
 
    Function CreateGridViewMultiComboBoxColumn(ByVal strHeaderText As StringByVal oDT As DataTable,
                    ByVal strValueMember As StringByVal strDisplayMember As String,
                    ByVal strFieldName As StringByVal intWidth As Int16As GridViewComboBoxColumn
        Dim col As GridViewComboBoxColumn = New GridViewMultiComboBoxColumn
        col.Name = strFieldName
        col.HeaderText = strHeaderText
        col.DataSource = oDT
        col.ValueMember = strValueMember
        col.DisplayMember = strDisplayMember
        col.FieldName = strFieldName
        col.Width = intWidth
        col.AutoSizeMode = GridViewAutoSizeColumnsMode.Fill
 
        Return col
    End Function
 
    Function createGridViewDateTimeColumn(ByVal strHeaderText As StringByVal strFieldName As String,
            ByVal Format As System.Windows.Forms.DateTimePickerFormatAs GridViewDateTimeColumn
 
        Dim oColumn As New GridViewDateTimeColumn()
        oColumn.Name = strFieldName
        oColumn.HeaderText = strHeaderText
        oColumn.FieldName = strFieldName
        oColumn.Format = Format
        oColumn.Width = 80
        'format for the editor
        oColumn.CustomFormat = "MM/dd/yyyy"
        Return oColumn
    End Function
 
    Function createGridViewDateTimeColumn(ByVal strHeaderText As String,
                                          ByVal strFieldName As StringAs GridViewDateTimeColumn
 
        Dim oColumn As New GridViewDateTimeColumn()
        oColumn.Name = strFieldName
        oColumn.HeaderText = strHeaderText
        oColumn.FieldName = strFieldName
        oColumn.Format = Windows.Forms.DateTimePickerFormat.Custom
        oColumn.FormatString = "{0:MM/dd/yyyy}"
        'format for the editor
        oColumn.CustomFormat = "MM/dd/yyyy"
        oColumn.Width = 80
        Return oColumn
    End Function
 
    Function createGridViewCommandColumn(ByVal strHeaderText As StringByVal strFieldName As String,
        ByVal intWidth As Int16As GridViewCommandColumn
        Dim oColumn As New GridViewCommandColumn()
        oColumn.HeaderText = strHeaderText
        oColumn.FieldName = strFieldName
        oColumn.Name = strFieldName
        oColumn.Width = intWidth
        Return oColumn
    End Function
 
    Function createGridViewCheckBoxColumn(ByVal strHeaderText As String,
        ByVal strFieldName As StringAs GridViewCheckBoxColumn
        Dim oColumn As New GridViewCheckBoxColumn()
        oColumn.Name = strFieldName
        oColumn.HeaderText = strHeaderText
        oColumn.FieldName = strFieldName
        Return oColumn
    End Function
 
    Sub ExpandAllRows(ByVal template As GridViewTemplate)
        For Each row As GridViewRowInfo In template.Rows
            If row.Cells(0).Value > "" Then
                row.IsExpanded = True
            End If
        Next
 
        If template.Templates.Count > 0 Then
            For Each childTemplate As GridViewTemplate In template.Templates
                ExpandAllRows(childTemplate)
            Next
        End If
    End Sub
End Class

 

Coding Examples:

Imports Telerik.WinControls.UI
 
Public Class CodingExamples
 
    Private Sub CodingExamples_Load(ByVal sender As ObjectByVal e As System.EventArgsHandles Me.Load
        Dim oTelerikGrid As New TelerikGrid
        Dim oCol As GridViewTextBoxColumn
 
        'set the filter descriptor on a column
        oCol = oTelerikGrid.createGridViewTextBoxColumn("Subdivision Name""vchrSubdivisionName", 11, 400)
        oCol.FilterDescriptor = New FilterDescriptor(""FilterOperator.StartsWith, "")
        RadGridView1.Columns.Add(oCol)
        RadGridView1.Columns.Add(oTelerikGrid.createGridViewCommandColumn("Delete""Delete", 100))
        RadGridView1.Columns.Add(oTelerikGrid.createGridViewTextBoxColumn("Order Number""OrderNumber", 11, 80))
        RadGridView1.Columns.Add(oTelerikGrid.createGridViewDecimalColumn("DocAmount""DocAmount""{0:N2}", 80))
        RadGridView1.Columns.Add(oTelerikGrid.createGridViewCheckBoxColumn("Voided""Voided"))
        RadGridView1.Columns.Add(oTelerikGrid.createGridViewDateTimeColumn("Doc Date""DocDate"))
 
        Dim oDT As DataTable = getDDLDataSource()
        RadGridView1.Columns.Add(oTelerikGrid.CreateGridViewComboBoxColumn("Order Type", oDT,
               "OrderTypeID""OrderType""OrderTypeID", 100))
 
        oDT = getDDLDataSource2()
        RadGridView1.Columns.Add(oTelerikGrid.CreateGridViewMultiComboBoxColumn("Cust Number", oDT,
               "custnmbr""custnmbr""custnmbr", 200))
 
        RadGridView1.Columns.Add(oTelerikGrid.createGridViewTextBoxColumn("Cust Name""custname", 11, 100))
 
        RadGridView1.EnableGrouping = False
        RadGridView1.AllowAddNewRow = True
        RadGridView1.AllowDeleteRow = False
        RadGridView1.AllowEditRow = True
        RadGridView1.EnableFiltering = False
 
        'set the grid datasource
        Me.RadGridView1.DataSource = getGridDataSource()
    End Sub
 
    Function getGridDataSource() As DataTable
        Dim oDT As New DataTable
 
        'add the columns
        oDT.Columns.Add(New DataColumn("Delete", System.Type.GetType("System.String")))
        oDT.Columns.Add(New DataColumn("OrderNumber", System.Type.GetType("System.String")))
        oDT.Columns.Add(New DataColumn("DocAmount", System.Type.GetType("System.Double")))
        oDT.Columns.Add(New DataColumn("Voided", System.Type.GetType("System.Boolean")))
        oDT.Columns.Add(New DataColumn("OrderTypeID", System.Type.GetType("System.Int16")))
        oDT.Columns.Add(New DataColumn("custnmbr", System.Type.GetType("System.String")))
        oDT.Columns.Add(New DataColumn("custname", System.Type.GetType("System.String")))
        oDT.Columns.Add(New DataColumn("DocDate", System.Type.GetType("System.DateTime")))
 
        'add rows
        oDT.Rows.Add("Delete""ORD123", 1.21, True, 2, "00001""Aaron Fitzpatrick""1/1/2012")
        oDT.Rows.Add("Delete""ORD124", 2.21, False, 4, "00002""Ace Travel""2/1/2012")
 
        Return oDT
    End Function
 
    Function getDDLDataSource() As DataTable
        Dim oDT As New DataTable
 
        'add the columns
        oDT.Columns.Add(New DataColumn("OrderType", System.Type.GetType("System.String")))
        oDT.Columns.Add(New DataColumn("OrderTypeID", System.Type.GetType("System.Int16")))
 
        'add rows
        oDT.Rows.Add("ORDER", 2)
        oDT.Rows.Add("RETURN", 4)
 
        Return oDT
    End Function
 
    Function getDDLDataSource2() As DataTable
        Dim oDT As New DataTable
 
        'add the columns
        oDT.Columns.Add(New DataColumn("custnmbr", System.Type.GetType("System.String")))
        oDT.Columns.Add(New DataColumn("custname", System.Type.GetType("System.String")))
 
        'add rows
        oDT.Rows.Add("00001""Aaron Fitzpatrick")
        oDT.Rows.Add("00002""Ace Travel")
 
        Return oDT
    End Function
 
    Private Sub RadGridView1_CellEditorInitialized(ByVal sender As Object
ByVal e As Telerik.WinControls.UI.GridViewCellEventArgs
Handles RadGridView1.CellEditorInitialized         Dim mcElement As RadMultiColumnComboBoxElement = TryCast(e.ActiveEditor, RadMultiColumnComboBoxElement)         If mcElement IsNot Nothing Then             ' (Un)Subscribe to the SelectedIndexChanged             RemoveHandler mcElement.SelectedIndexChanged, AddressOf mcElement_SelectedIndexChanged             AddHandler mcElement.SelectedIndexChanged, AddressOf mcElement_SelectedIndexChanged             mcElement.AutoSizeDropDownToBestFit = True         End If     End Sub     Private Sub mcElement_SelectedIndexChanged(ByVal sender As ObjectByVal e As EventArgs)         Dim mcElement As RadMultiColumnComboBoxElement = TryCast(sender, RadMultiColumnComboBoxElement)         Dim row As GridViewDataRowInfo = CType(mcElement.SelectedItem, GridViewDataRowInfo)         ' If we are in the new row of RadGridView, have selected item, then get the          ' underlying data item of this item and extract the necessary data from it         If row IsNot Nothing Then             If TypeOf Me.RadGridView1.CurrentRow Is GridViewNewRowInfo Then                 Dim rowView As DataRowView = CType(row.DataBoundItem, DataRowView)                 Dim dRow As DataRow = rowView.Row                 Dim strCustName As String = dRow("custname").ToString()                 Me.RadGridView1.CurrentRow.Cells("custname").Value = strCustName             End If         End If     End Sub End Class
Unknown or N/A
.NET Development