2012-04-19 114 views
0

我目前正在開發一個使用YUI網格的解決方案。我的問題是,我的主頁是我所有其他頁面的摘要,它包括顯示在其他頁面上的網格的摘要網格,我不想在每個頁面的代碼後面重複使用相同的代碼。我試圖集中它。所以我所做的是我在<asp:Placeholders id="LoadOpenPurchasesGridDataPlaceholder" runat="server">的地方寫了一個JSON字符串到主頁和Open Purchase Page中。但是,因爲我想在所有頁面之間共享子過程,所以我公開共享了該子過程,但它提供了一個錯誤:無法在共享方法或共享成員內引用類的實例成員。訪問一個asp:佔位符從一個公共共享子

現在,如果我想從另一個代碼begind的頁面response.write,我使用HttpContext.Current.Response.Write()。是否有類似的方式從我調用它的位置訪問頁面的HTML控件。 (我試圖解釋得很詳細,很抱歉造成混淆)。

我的代碼:

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 

回答

0

我已經找到了答案,我的問題。我不是直接從調用方法引用佔位符,而是將佔位符作爲方法參數傳遞,並將其從調用方法作爲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'