I have found the answer to my question. Instead of trying to reference the placeholder directly from the calling method, I rather pass the placeholder as a method parameter, and I send it from the calling method as Me.PlaceholderID.
' Public Shared Sub LoadOpenPurchasesGridData(ByRef Placeholder As Object, ByVal Location As String, ByVal Coop As String, ByVal Commodity As String, ByVal Season As String, ByVal Trader As String, ByVal SearchCriteria As String, ByVal Department As String, ByVal Database As String, ByVal InitialLoad As Boolean)
Dim SqlConnection As New SqlConnection
Dim SqlCommand As New SqlCommand
Dim SqlParameter As New List(Of SqlParameter)
Dim SqlReader As SqlDataReader = Nothing
Dim ReturnString = "["
Dim Counter As Integer = 1
Try
SqlConnection = CreateDatabaseConnection(ConnectionString)
AddSqlParameterToCollection(SqlParameter, "@Location", Location)
AddSqlParameterToCollection(SqlParameter, "@Coop", Coop)
AddSqlParameterToCollection(SqlParameter, "@Commodity", Commodity)
AddSqlParameterToCollection(SqlParameter, "@Season", Season)
AddSqlParameterToCollection(SqlParameter, "@Trader", Trader)
AddSqlParameterToCollection(SqlParameter, "@Search", SearchCriteria)
AddSqlParameterToCollection(SqlParameter, "@Database", Database)
SqlCommand = CreateSqlCommand("[proc_Dynamic_GetPOC]", SqlConnection, SqlParameter)
SqlReader = SqlCommand.ExecuteReader()
If SqlReader.HasRows Then
Do While SqlReader.Read And Counter < 200
If Counter <> 1 Then
ReturnString += ","
End If
ReturnString += "{""PrimCont"":""" & SqlReader("PrimCont") & ""","
ReturnString += """PSCM_COOP_ID"":""" & SqlReader("PSCM_COOP_ID") & ""","
ReturnString += """POCNumber"":""" & SqlReader("POCNumber") & ""","
ReturnString += """VENDORID"":""" & SqlReader("VENDORID") & ""","
ReturnString += """VendorContract"":""" & SqlReader("VendorContract") & ""","
ReturnString += """ITMCLSDC"":""" & SqlReader("ITMCLSDC") & ""","
ReturnString += """CommodityGrade"":""" & SqlReader("CommodityGrade") & ""","
ReturnString += """ContractQty"":""" & SqlReader("ContractQty") & ""","
ReturnString += """LIQty"":""" & SqlReader("LIQty") & ""","
ReturnString += """TonsNotFinalized"":""" & SqlReader("TonsNotFinalized") & ""","
ReturnString += """POC_DEL_QTY"":""" & SqlReader("POC_DEL_QTY") & ""","
ReturnString += """OpenQty"":""" & SqlReader("OpenQty") & ""","
ReturnString += """ContractPrice"":""" & SqlReader("ContractPrice") & ""","
ReturnString += """PurchaseBasis"":""" & SqlReader("PurchaseBasis") & ""","
ReturnString += """Safex Month"":""" & SqlReader("Safex Month") & ""","
ReturnString += """SpreadToSafexMonth"":""" & SqlReader("SpreadToSafexMonth") & ""","
ReturnString += """LOCNDSCR"":""" & SqlReader("LOCNDSCR") & ""","
ReturnString += """Area"":""" & SqlReader("Area") & ""","
ReturnString += """VesselName"":""" & SqlReader("VesselName") & ""","
ReturnString += """DeliveryMonth"":""" & SqlReader("DeliveryMonth") & ""","
ReturnString += """SignedContract"":""" & SqlReader("SignedContract") & """}"
Counter += 1
Loop
End If
ReturnString += "]"
Counter = 0
If InitialLoad = True Then
Dim LoadGridDataContainer As New HtmlGenericControl("input")
LoadGridDataContainer.ID = "hdnOpenPurchasesGridData"
LoadGridDataContainer.Attributes.Add("type", "hidden")
LoadGridDataContainer.Attributes.Add("value", ReturnString)
Placeholder.Controls.Add(LoadGridDataContainer)
Else
HttpContext.Current.Response.Write(ReturnString)
End If
Catch ex As Exception
HttpContext.Current.Response.Write("<span class=""error_message_span"">ERROR - An error occurred loading the open puchases grid. Please contact the system administrators for assistance.</span>" & ex.Message)
Finally
If Not IsNothing(SqlReader) Then
SqlReader.Close()
SqlReader = Nothing
End If
If Not IsNothing(SqlCommand) Then
SqlCommand.Dispose()
SqlCommand = Nothing
End If
If Not IsNothing(SqlConnection) Then
SqlConnection.Close()
SqlConnection.Dispose()
SqlConnection = Nothing
End If
End Try
End Sub'