私は少し問題があります。私は現在、各ページにいくつかのドロップダウンリストを持つウェブページを作っています。ドロップダウンリストの目的は、YUIデータテーブルの情報だけでなく、お互いの情報をフィルタリングすることです。別の場所に異なる商品などがあります。VB.Net 2008の別のサブプロシージャにパラメータとしてサブプロシージャを渡す
私はDBからオプションIDと値を読み取る共通の機能を作っていますが、その情報は3通りの方法で使用できます。現在、ページがロードされると、ドロップダウンリストをロードするAsp:プレースホルダが作成されます。Ajaxによって選択ボックスを更新するように情報が要求された場合は、HTML文字列サーバー側とresponse.writeを連結します。しかし、私のクライアントは、ドロップダウンボックスのリストが長すぎる場合、YUIモーダルパネルとYUIグリッドを使用しているかどうか検索するように要求しました。私はまだサブプロシージャをフェッチするのと同じデータを使いたいと思いますが、今回はJSON文字列としてデータを送り返したいと思います。
現在のところ、プレースホルダを作成するためにページの初期読み込みを行うか、HTML文字列を作成するための更新を読み込むかを示す論理フラグがありますが、 "情報レンダリング/書式設定"サブプロシージャをパラメータこれはいくつかのブール型フラグの必要性を打ち消します。
マイコード
Public Shared Sub LoadCoop(ByRef PlaceHolder As Object, ByVal SearchCriteria 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 FilterList As New List(Of FilterObject) Try SqlConnection = CreateDatabaseConnection(ConnectionString) AddSqlParameterToCollection(SqlParameter, "@SearchCriteria", SearchCriteria) AddSqlParameterToCollection(SqlParameter, "@Database", Database) SqlCommand = CreateSqlCommand("[proc_Dynamic_GetCoop]", SqlConnection, SqlParameter) SqlReader = SqlCommand.ExecuteReader If SqlReader.HasRows Then Do While SqlReader.Read Dim TempFilterObject As FilterObject = New FilterObject TempFilterObject.ID = SqlReader("PSCM_COOP_ID") TempFilterObject.Description = SqlReader("PSCM_COOP_ID") FilterList.Add(TempFilterObject) Loop End If If InitialLoad = True Then CreateHTMLSelectContainer(PlaceHolder, FilterList, "Coop") Else CreateHTMLSelectString(FilterList, "Coop") End If Catch ex As Exception HttpContext.Current.Response.Write("ERROR - An error occurred loading the co-op filter. Please contact the system administrators for assistance.") 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 Public Shared Sub CreateHTMLSelectContainer(ByRef PlaceHolder As Object, ByVal FilterList As List(Of FilterObject), ByVal ID As String) Dim ReturnString As String = "" For Each Obj As FilterObject In FilterList ReturnString += "opening option tag" & Obj.Description & "closing option tag" Next Dim Container As New HtmlGenericControl("select") Container.ID = "ddl" & ID Container.Attributes.Add("class", "filtering_fields_select") Container.InnerHtml = ReturnString PlaceHolder.Controls.Add(Container) If FilterList.Count > 20 Then PlaceHolder.Controls.Add(New LiteralControl("lookup image goes here")) End If End Sub Public Shared Sub CreateHTMLSelectString(ByVal FilterList As List(Of FilterObject), ByVal ID As String) Dim ReturnString As String = "opening select tag" Dim Obj As FilterObject = Nothing For Each Obj In FilterList ReturnString += "opening option tag" & Obj.Description & "closing option tag" Next ReturnString += "closing select tag" If FilterList.Count > 20 Then ReturnString += "lookup image goes here" End If HttpContext.Current.Response.Write(ReturnString) End Sub
ブリリアント!答えてくれてありがとう。 実際に必要なパラメータだけを使用するjavascriptとは異なり、パラメータは同じでなければならないというのは残念です。 –
さて、最後のパラメータを次のように宣言することで、パラメータの不確定なリストを許可することができます。 ByVal ParamArray args()オブジェクト でもそれはv。醜いですが、私はデリゲートで動作するかどうか懐疑的です。非常に異なるパラメータリストを持つ関数がある場合は、試してみる価値があります。 –