Доступ к asp: заполнитель из общедоступной общей подпрограммы

В настоящее время я разрабатываю решение, использующее сетки YUI. Моя проблема в том, что моя домашняя страница представляет собой сводку всех других моих страниц, она включает сводную сетку сеток, отображаемых на других страницах, и я не хочу повторно использовать один и тот же код в коде каждой страницы позади. Я пытаюсь централизовать это. Итак, что я сделал, я сделал <asp:Placeholders id="LoadOpenPurchasesGridDataPlaceholder" runat="server"> там, где я записываю строку JSON, на домашней странице и на странице открытых покупок. Однако, поскольку я хочу совместно использовать подпроцедуру на всех страницах, я сделал ее общедоступной, но она дает ошибку: не может ссылаться на член экземпляра класса из общего метода или общего члена.

Теперь, если я хочу ответить.write на страницу из другого кода, я использую HttpContext.Current.Response.Write (). Есть ли аналогичный способ доступа к элементам управления HTML страницы, откуда я его вызываю. (Я попытался объяснить это подробно, извините за вызванную путаницу.)

My Code:

Shared Sub LoadOpenPurchasesGrid(ByVal Location As String, ByVal Coop As String, ByVal Commodity As String, ByVal Financed As String, ByVal Season As String, ByVal Trader As String, ByVal Department As String, ByVal Database As String)
    Try
        Dim ReturnString As String = Nothing
        If Location = "0" And Coop = "0" And Commodity = "0" And Season = "0" And Trader = "0" Then
             ReturnString = (LoadOpenPurchasesGridData("", "", "", "", "", Department, Database))
             Dim LoadGridDataContainer As New HtmlGenericControl("input")
             LoadGridDataContainer.ID = "hdnOpenPurchasesGridData"
             LoadGridDataContainer.Attributes.Add("type", "hidden")
             LoadGridDataContainer.Attributes.Add("value", ReturnString)
             LoadOpenPurchasesGridDataPlaceholder.Controls.Add(LoadGridDataContainer)
        Else
             ReturnString = (LoadOpenPurchasesGridData(Location, Coop, Commodity, Season, Trader, Department, Database))
             HttpContext.Current.Response.Write(ReturnString)
        End If
        HttpContext.Current.Response.Write(ex.message)
    End Try
End Sub


person Eugene de Lange    schedule 19.04.2012    source источник


Ответы (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'
person Eugene de Lange    schedule 26.04.2012