Доступ к asp:Placeholder из общедоступной сабвуфера
В настоящее время я разрабатываю решение, которое использует сетки YUI. Моя проблема в том, что моя домашняя страница представляет собой сводку всех других моих страниц, она включает в себя сводную сетку сеток, отображаемых на других страницах, и я не хочу повторно использовать один и тот же код в коде каждой страницы позади. Я пытаюсь централизовать это. Так что я сделал, я сделал <asp:Placeholders id="LoadOpenPurchasesGridDataPlaceholder" runat="server">
где я записываю строку JSON на главной странице и странице открытых покупок. Однако, поскольку я хочу разделить подпроцедуру на всех страницах, я сделал ее общедоступной, но она выдает ошибку: не может ссылаться на член экземпляра класса из общего метода или общего члена.
Теперь, если я хочу response.write на страницу из другого кода, например, я использую HttpContext.Current.Response.Write(). Есть ли аналогичный способ доступа к элементам управления HTML страницы, откуда я ее называю. (Я попытался объяснить это подробно, извините за путаницу.)
Мой код:
Shared Sub LoadOpenPurchasesGrid (Местоположение ByVal в виде строки, CooVal Coop в виде строки, Товар ByVal в виде строки, Финансирование ByVal в виде строки, Сезон ByVal в виде строки, Торговец ByVal в виде строки, Отдел ByVal в виде строки, База данных ByVal в виде строки) Пытаться Dim ReturnString As String = Nothing Если Location = "0", And Coop = "0", And Commodity = "0", And Season = "0", And Trader = "0", то ReturnString = (LoadOpenPurchasesGridData("", "", "", "", "", Department, Database)) Dim LoadGridDataContainer As New HtmlGenericControl("input") LoadGridDataContainer.ID = "hdnOpenPurchasesGridData" LoadGridDataContainer.Attributes.Add("тип", "скрытый") LoadGridDataContainer.Attributes.Add("value", ReturnString) LoadOpenPurchasesGridDataPlaceholder.Controls.Add(LoadGridDataContainer) еще ReturnString = (LoadOpenPurchasesGridData (Местоположение, Курятник, Товар, Сезон, Трейдер, Отдел, База данных)) HttpContext.Current.Response.Write(ReturnString) Конец, если HttpContext.Current.Response.Write(ex.message) Конец попробовать End Sub
1 ответ
Я нашел ответ на свой вопрос. Вместо того, чтобы пытаться ссылаться на заполнитель непосредственно из вызывающего метода, я скорее передаю заполнитель в качестве параметра метода и отправляю его из вызывающего метода как 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'