2012-04-19 97 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'