Plugin Description
This plug-in provides an "Auto Columns" feature, similar to that available for DataTables, for the Analysis Grid. Columns will automatically be created for the AG, with special formatting applied for dates, currencies, and column headers. Download includes plug-in .dll, VB source code, and an example report definition. (.NET)
Plug-In Installation Instructions: Click Here
View Code Snippet
Imports System.Xml
Imports System.Web
Imports System.IO
Imports System.Text.RegularExpressions
Public Class LogiPlugin
	Public Sub SetAgColumns(ByRef rdObjects As rdPlugin.rdServerObjects)
        Dim sAgTableID As String = rdObjects.PluginParameters("AgTableID")
        Dim sDateFormat As String = rdObjects.PluginParameters("AgDateFormat")
        Dim sCurrencyCols As String = rdObjects.PluginParameters("AgCurrencyColumns")
        Dim bPopUpValues As Boolean = rdObjects.PluginParameters("AgPopUpValuesFilter")
        Dim bFixHeaders As Boolean = rdObjects.PluginParameters("AgFixHeaders")
        
		Dim xmlDefinition As New XmlDocument()
        xmlDefinition.LoadXml(rdObjects.CurrentDefinition)
        Dim eleAgTable As XmlElement = xmlDefinition.SelectSingleNode("//*[@ID='" & sAgTableID & "']")
        Dim xmlData As System.Xml.XmlDocument = rdObjects.CurrentData
        Dim eleFirstRow As XmlElement = xmlData.SelectSingleNode("/rdData/*")
        If Not IsNothing(eleFirstRow) Then
            Dim atr As XmlAttribute
            For Each atr In eleFirstRow.Attributes
                'Create a new AnalysisGridColumn element under the DataTable.
                Dim eleAgTableColumn As XmlElement = eleAgTable.AppendChild(xmlDefinition.CreateElement("AnalysisGridColumn"))
                'Set the AG Column attributes, ID , Header, DataColumn, DataType, and Format (if necessary)
                eleAgTableColumn.SetAttribute("ID", "col" & atr.Name)
                'Mod the header to remove underscores and check for CamelCase to split
                Dim headerText As String = atr.Name
                If bFixHeaders = True Then
                    headerText = Replace(atr.Name, "_", " ")
                    headerText = Regex.Replace(headerText, "([a-z])([A-Z])", "$1 $2")
                End If
                eleAgTableColumn.SetAttribute("Header", headerText)
                eleAgTableColumn.SetAttribute("DataColumn", atr.Name)
                'check if the value is a number to apply the correct DataType
                If IsNumeric(atr.Value) Then
                    'check if the value is part of the currency cols list to apply currency formatting
                    If InStr(sCurrencyCols, atr.Name) > 0 Then
                        eleAgTableColumn.SetAttribute("Format", "Currency")
                    End If
                    eleAgTableColumn.SetAttribute("DataType", "Number")
                    'check if the value is a date to apply the correct format otherwise set as text
                ElseIf IsDate(atr.Value) Then
                    eleAgTableColumn.SetAttribute("DataType", "DateTime")
                    eleAgTableColumn.SetAttribute("Format", sDateFormat)
                    'if you want pop ups in filter, then all dates will be given the calendar option
                    If bPopUpValues = True Then
                        eleAgTableColumn.SetAttribute("PopupValuesForFilter", "Calendar")
                    End If
                Else
                    eleAgTableColumn.SetAttribute("DataType", "Text")
                    'if you want pop ups in filters, then all text data will be given the list option
                    If bPopUpValues = True Then
                        eleAgTableColumn.SetAttribute("PopupValuesForFilter", "List")
                    End If
                End If
            Next
        End If
        rdObjects.CurrentDefinition = xmlDefinition.OuterXml
    End Sub
	
End Class	
Further Reading
How To Create a .NET Plug-In: Click Here
How To Create A Java Plug-In: Click Here
Logi Plug-Ins: Click Here