Доступ к 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'
Другие вопросы по тегам