I will try your last suggestions shortly. However, for now, here is some information on the exception I'm getting:
Note: above is an excerpt of the StackTrace. I can provide the full StackTrace if you wish.
...
My HandleException method, showed me that the statement that caused the exception to occur is the following (from PopulateDatabaseDependentControls() method in code, see code block, below):
... and it works!
FYI . . . Stored Procedure Returns data as such:
BidItemID CustomerDesc Plants DateCreated
14 TestSaveItem201108121517a PLAA, PLBB 08/12/2011
19 TestSaveItem201108121517b PLAA, PLBB, PLCC 08/18/2011
Code Excerpt:
Private Sub InitializeBidItemsDataGrid()
' called by CustomInitialization after call to InitializeComponent() in New() constructor
Try
With Me.dgBidItems
' Set Location, Size
.Left = 6 ' X
.Top = 22 ' Y: space for the Group Box Text
.Height = Me.gpItems.Height - 24
.Width = Me.gpItems.Width - 12
.TableElement.RowHeight = 60
' Disable 'Click here to add a new row' row
.AllowAddNewRow = False
' Disable 'Drag a column here to group by that column' row
.ShowGroupPanel = False
Dim gvdCol As tlrkUI.GridViewDataColumn
gvdCol = New tlrkUI.GridViewCheckBoxColumn("colSelected")
gvdCol.HeaderText = ".."
gvdCol.Width = 20
.Columns.Add(gvdCol)
gvdCol = New tlrkUI.GridViewTextBoxColumn("BidItemID")
gvdCol.HeaderText = "BidItemID"
gvdCol.Width = 70
.Columns.Add(gvdCol)
gvdCol = New tlrkUI.GridViewTextBoxColumn("CustomerDesc")
gvdCol.HeaderText = "CustomerDesc"
gvdCol.Width = 140
.Columns.Add(gvdCol)
'
' PlantsV9
'
'' comebackhere
.Columns.Remove("Plants")
gvdCol = New CustomGridViewColumn("Plants")
gvdCol.HeaderText = "Plants"
gvdCol.Width = 90
.Columns.Add(gvdCol)
gvdCol = New tlrkUI.GridViewTextBoxColumn("DateCreated")
gvdCol.HeaderText = "DateCreated"
gvdCol.Width = 70
.Columns.Add(gvdCol)
End With
Catch ex As Exception
HandleException(ex)
End Try
End Sub
Private Sub PopulateDatabaseDependentControls()
' called in response to handling User Control Load event
If Me.iBidHeaderID <= 0 Then
Exit Sub
End If
Dim startTime As DateTime = DateTime.Now
Try
Dim cmd As New SqlCommand
Dim ds As DataSet = New DataSet()
Dim da As SqlDataAdapter
' [sp_APP_BidItem_Get_ByBidHeaderID]
Dim sSql As String = "dbo.sp_APP_GetBidItemsByBidHeaderID"
Using dbconn As New SqlConnection(sMainConnectionString)
Try
dbconn.Open()
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = dbconn
cmd.CommandText = sSql
cmd.Parameters.Add("@BidHeaderID", System.Data.SqlDbType.Int).Value = Me.iBidHeaderID
da = New SqlDataAdapter(cmd)
da.Fill(ds, "BidItems")
If ds IsNot Nothing AndAlso ds.Tables IsNot Nothing AndAlso ds.Tables.Count > 0 Then
' assign data binding data soures
bsBidItems = New BindingSource()
bsBidItems.DataSource = ds.Tables("BidItems").DefaultView()
' * * * * * NOTE: FOLLOWING IS THE STATEMENT THAT THE EXCEPTION OCCURS ON * * * * * *
Me.dgBidItems.DataSource = bsBidItems ' * * * * * NOTE: THIS IS THE STATEMENT THAT THE EXCEPTION OCCURS ON * * * * * *
' * * * * * NOTE: ABOVE IS THE STATEMENT THAT THE EXCEPTION OCCURS ON * * * * * *
End If
Catch sqlEx As SqlException
HandleException(sqlEx)
Finally
End Try
End Using
Catch ex As Exception
HandleException(ex)
End Try
End Sub
#Region "Assign Plants Using CustomGridViewCellElement"
Public Class CustomGridViewCellElement
Inherits tlrkUI.GridDataCellElement
Private listElement As Telerik.WinControls.UI.RadListElement
Private linkDone As CustomLinkItem
Private linkRemove As CustomLinkItem
Private dropDownListElement As Telerik.WinControls.UI.RadDropDownListElement
Private linksContainer As Telerik.WinControls.UI.StackLayoutElement
Public Sub New(ByVal column As tlrkUI.GridViewColumn, ByVal row As tlrkUI.GridRowElement)
MyBase.New(column, row)
End Sub
Protected Overrides Sub CreateChildElements()
MyBase.CreateChildElements()
Try
Dim mainContainer As Telerik.WinControls.UI.StackLayoutElement = New Telerik.WinControls.UI.StackLayoutElement()
With mainContainer
.Orientation = Orientation.Vertical
.StretchHorizontally = True
.StretchVertically = True
.ElementSpacing = 3
End With
Me.Children.Add(mainContainer)
dropDownListElement = New Telerik.WinControls.UI.RadDropDownListElement()
With dropDownListElement
.Visibility = Telerik.WinControls.ElementVisibility.Collapsed
.StretchVertically = False
.ListElement.BackColor = Color.PaleGoldenrod
.ListElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid
End With
mainContainer.Children.Add(dropDownListElement)
listElement = New Telerik.WinControls.UI.RadListElement
With listElement
.StretchHorizontally = True
.StretchVertically = True
End With
mainContainer.Children.Add(listElement)
linksContainer = New tlrkUI.StackLayoutElement()
With linksContainer
.StretchHorizontally = True
.StretchVertically = False
End With
linksContainer.Visibility = Telerik.WinControls.ElementVisibility.Collapsed
linkDone = New CustomLinkItem("Done")
linksContainer.Children.Add(linkDone)
linkRemove = New CustomLinkItem("Remove")
linksContainer.Children.Add(linkRemove)
mainContainer.Children.Add(linksContainer)
'
' Populate DropDownListElement
'
PopulateDropDownListElement__FromDatabase()
'PopulateDropDownListElement__UsingHardCodedValues()
Catch ex As Exception
HandleException(ex)
End Try
End Sub
Public Overrides Sub UpdateInfo()
MyBase.UpdateInfo()
Try
If (linksContainer IsNot Nothing) Then
If RowInfo.IsCurrent Then
linksContainer.Visibility = Telerik.WinControls.ElementVisibility.Visible
dropDownListElement.Visibility = Telerik.WinControls.ElementVisibility.Visible
Else
linksContainer.Visibility = Telerik.WinControls.ElementVisibility.Collapsed
dropDownListElement.Visibility = Telerik.WinControls.ElementVisibility.Collapsed
End If
End If
Catch ex As Exception
HandleException(ex)
End Try
End Sub
Private Sub HandleException(ByVal ex As Exception, Optional ByVal bLogException As Boolean = True)
If bLogException AndAlso sbLog IsNot Nothing Then
modAppMain.LogException(ex, sName & "." & sSourceMethod & " Log: " & sbLog.ToString(), _
"Exception", sName, True)
End If
End Sub
Private Sub PopulateDropDownListElement__UsingHardCodedValues()
dropDownListElement.Items.Add(New tlrkUI.RadListDataItem("PLAA", 1))
dropDownListElement.Items.Add(New tlrkUI.RadListDataItem("PLBB", 2))
dropDownListElement.Items.Add(New tlrkUI.RadListDataItem("PLCC", 3))
dropDownListElement.Items.Add(New tlrkUI.RadListDataItem("PLDD", 4))
End Sub
Private Sub PopulateDropDownListElement__FromDatabase()
sSourceMethod = "PopulateDropDownListElement__FromDatabase"
Dim sbSQL As StringBuilder = New StringBuilder("select distinct plantid, plantcode")
sbSQL.Append(" from Plant") ' NOT ACTUAL SQL
Dim cmd As New SqlCommand
Dim reader As SqlDataReader
Try
Using dbconn As New SqlConnection(APP.My.Settings.dbConnOAM)
Try
dbconn.Open()
cmd.CommandType = CommandType.Text
cmd.Connection = dbconn
cmd.CommandText = sbSQL.ToString()
reader = cmd.ExecuteReader()
If reader.HasRows Then
dropDownListElement.DataSource = reader
dropDownListElement.DisplayMember = "plantcode"
dropDownListElement.ValueMember = "plantid"
End If
reader.Close()
Catch sqlEx As SqlException
HandleException(sqlEx)
Finally
End Try
End Using
Catch ex As Exception
HandleException(ex)
End Try
dropDownListElement.Text = "Select a Plant"
End Sub
Protected Overrides Sub SetContentCore(ByVal value As Object)
sSourceMethod = "SetContentCore"
Try
listElement.Items.Clear()
If ((value IsNot Nothing) AndAlso (value IsNot DBNull.Value)) Then
Dim arValues() As String = value.ToString().Split(",")
For Each val As String In arValues
listElement.Items.Add(New Telerik.WinControls.UI.RadListDataItem(val))
Next
End If
Catch ex As Exception
HandleException(ex)
End Try
End Sub
Protected Overrides Function MeasureOverride(ByVal availableSize As System.Drawing.SizeF) As System.Drawing.SizeF
sSourceMethod = "MeasureOverride"
Try
If linksContainer.Visibility = Telerik.WinControls.ElementVisibility.Visible Then
listElement.MaxSize = New System.Drawing.Size(0, System.Convert.ToInt32(availableSize.Height - 40))
Else
listElement.MaxSize = Size.Empty
End If
Catch ex As Exception
HandleException(ex)
End Try
Return MyBase.MeasureOverride(availableSize)
End Function
Public Overrides Function IsCompatible(ByVal data As Telerik.WinControls.UI.GridViewColumn, ByVal context As Object) As Boolean
'Return MyBase.IsCompatible(data, context)
sSourceMethod = "IsCompatible"
Try
If ((data.Name = "Plants") AndAlso (TypeOf context Is Telerik.WinControls.UI.GridDataRowElement)) Then
Return True
End If
Catch ex As Exception
HandleException(ex)
End Try
Return False
End Function
End Class
Public Class CustomGridViewColumn
Inherits tlrkUI.GridViewDataColumn
Private sName As String = "ucBidItemsList"
Private sSourceMethod As String
Private sbLog As StringBuilder = New StringBuilder("ucBidItemsList.CustomGridViewColumn Log:" & vbCrLf)
Public Sub New(ByVal sFieldName As String)
MyBase.New(sFieldName)
sSourceMethod = "CustomGridViewColumn.New"
sbLog.AppendLine("Reached " & sName & "." & sSourceMethod)
sbLog.AppendLine(" - sFieldName: " & sFieldName)
End Sub
Public Overrides Function GetCellType(ByVal row As Telerik.WinControls.UI.GridViewRowInfo) As System.Type
sSourceMethod = "CustomGridViewColumn.GetCellType"
sbLog.AppendLine("Reached " & sName & "." & sSourceMethod)
sbLog.AppendLine(" - TypeOf row: " & row.GetType().ToString)
Try
If (TypeOf row Is Telerik.WinControls.UI.GridViewDataRowInfo) Then
sbLog.AppendLine(" before Return GetType(CustomGridViewCellElement)")
Return GetType(CustomGridViewCellElement)
End If
If sbLog IsNot Nothing Then
modAppMain.LogMessage(sbLog.ToString(), sName)
End If
Catch ex As Exception
HandleException(ex)
End Try
Return MyBase.GetCellType(row)
End Function
Private Sub HandleException(ByVal ex As Exception, Optional ByVal bLogException As Boolean = True)
'If (ex.InnerException IsNot Nothing) Then
' MessageBox.Show(sSourceMethod & ". Exception: " & ex.Message & vbCrLf & _
' " - - - - - - - - - - " & vbCrLf & _
' " Inner Exception: " & vbCrLf & ex.InnerException.Message)
'Else
' MessageBox.Show(sSourceMethod & ". Exception: " & ex.Message)
'End If
If bLogException AndAlso sbLog IsNot Nothing Then
modAppMain.LogException(ex, sName & "." & sSourceMethod & " Log: " & sbLog.ToString(), _
"Exception", sName, True)
End If
End Sub
End Class
Private Sub dgBidItems_CurrentRowChanged(ByVal sender As Object, ByVal e As Telerik.WinControls.UI.CurrentRowChangedEventArgs) Handles dgBidItems.CurrentRowChanged
If e.OldRow IsNot Nothing Then
e.OldRow.Height = 40
End If
If e.CurrentRow IsNot Nothing Then
e.CurrentRow.Height = 120
End If
End Sub
#End Region