少し問題があります。現在、各ページにいくつかのドロップダウン リストがある Web ページを作成しています。ドロップダウン リストの目的は、YUI データテーブル内の情報と、互いの情報をフィルタリングすることです。別の場所には別の商品などがあります。
オプションIDと値をDBから読み込む共通関数を作ったのですが、情報は3通りの使い方ができます。現在、ページが読み込まれると、ドロップダウン リストを読み込む Asp:Placeholder を作成します。選択ボックスを更新するために Ajax によって情報が要求された場合は、サーバー側の HTML 文字列を連結して response.write します。しかし今、私のクライアントは、ドロップダウン ボックスのリストが長すぎるかどうかを調べるように要求してきました。これは、YUI モーダル パネルと YUI グリッドを使用して行っています。同じデータ フェッチ サブプロシージャを引き続き使用したいと考えていますが、今回はデータを JSON 文字列として送り返したいと考えています。
現在、プレースホルダーを作成するためのページの初期ロードか、HTML 文字列を作成するための更新ロードかを示すブール値フラグがありますが、「情報のレンダリング/フォーマット」サブプロシージャをパラメーターとして渡したいと思います。いくつかのブール フラグが必要です。
マイコード
Public Shared Sub LoadCoop (オブジェクトとしての ByRef PlaceHolder、文字列としての ByVal SearchCriteria、文字列としての ByVal データベース、ブール値としての ByVal InitialLoad) 新しい SqlConnection として Dim SqlConnection Dim SqlCommand を新しい SqlCommand として Dim SqlParameter As New List(Of SqlParameter) Dim SqlReader As SqlDataReader = Nothing FilterList を新しいリスト (FilterObject の) として薄暗くする 試す SqlConnection = CreateDatabaseConnection(ConnectionString) AddSqlParameterToCollection(SqlParameter, "@SearchCriteria", SearchCriteria) AddSqlParameterToCollection(SqlParameter, "@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) ループ 終了条件 InitialLoad = True の場合 CreateHTMLSelectContainer(PlaceHolder, FilterList, "Coop") そうしないと CreateHTMLSelectString(FilterList, "Coop") 終了条件 ex を例外としてキャッチ HttpContext.Current.Response.Write("エラー - Co-op フィルターの読み込み中にエラーが発生しました。サポートが必要な場合は、システム管理者にお問い合わせください。") ついに If Not IsNothing(SqlReader) Then SqlReader.Close() SqlReader = なし 終了条件 If Not IsNothing(SqlCommand) Then SqlCommand.Dispose() SqlCommand = なし 終了条件 If Not IsNothing(SqlConnection) Then SqlConnection.Close() SqlConnection.Dispose() SqlConnection = なし 終了条件 エンドトライ サブ終了 Public Shared Sub CreateHTMLSelectContainer(ByRef PlaceHolder As Object, ByVal FilterList As List(Of FilterObject), ByVal ID As String) Dim ReturnString As String = "" FilterList 内の FilterObject としての各オブジェクトについて ReturnString += "開始オプション タグ" & Obj.Description & "終了オプション タグ" 次 Dim Container As New HtmlGenericControl("select") Container.ID = "ddl" & ID Container.Attributes.Add("class", "filtering_fields_select") Container.InnerHtml = ReturnString PlaceHolder.Controls.Add(コンテナ) If FilterList.Count > 20 Then PlaceHolder.Controls.Add(New LiteralControl("ルックアップ画像がここに入る")) 終了条件 サブ終了 Public Shared Sub CreateHTMLSelectString(ByVal FilterList As List(Of FilterObject), ByVal ID As String) Dim ReturnString As String = "選択タグを開く" Dim Obj As FilterObject = Nothing FilterList の各オブジェクトに対して ReturnString += "開始オプション タグ" & Obj.Description & "終了オプション タグ" 次 ReturnString += "選択タグを閉じる" If FilterList.Count > 20 Then ReturnString += "ルックアップ画像がここに入る" 終了条件 HttpContext.Current.Response.Write(ReturnString) サブ終了