我有一点问题。我目前正在制作一个网页,每页都有几个下拉列表。下拉列表的目的是过滤 YUI 数据表中的信息,以及彼此的信息,例如。不同的地点会有不同的商品等。
我制作了一个通用函数来从数据库中读取选项 ID 和值,但是可以通过 3 种方式使用这些信息。目前,当页面加载时,我创建了一个加载下拉列表的 Asp:Placeholder。如果 Ajax 请求信息来更新选择框,我将连接一个 HTML 字符串服务器端并 response.write 它。但是现在我的客户要求查找下拉框中的列表是否太长,我正在使用 YUI 模态面板和 YUI 网格进行查找。我仍然想使用相同的数据获取子过程,但这次我想将数据作为 JSON 字符串发回。
目前我有布尔标志来表明它是页面初始加载以创建占位符,还是更新加载以创建 HTML 字符串,但我更愿意将“信息呈现/格式化”子过程作为参数传递,这消除了需要几个布尔标志。
我的代码
公共共享子 LoadCoop(ByRef PlaceHolder 作为对象,ByVal SearchCriteria 作为字符串,ByVal 数据库作为字符串,ByVal InitialLoad 作为布尔值)
将 SqlConnection 暗淡为新的 SqlConnection
将 SqlCommand 调暗为新的 SqlCommand
将 SqlParameter 调暗为新列表(SqlParameter 的)
将 SqlReader 调暗为 SqlDataReader = 无
将 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
将 TempFilterObject 调暗为 FilterObject = 新的 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")
万一
抓住前任作为例外
HttpContext.Current.Response.Write("ERROR - 加载合作过滤器时出错。请联系系统管理员寻求帮助。")
最后
If Not IsNothing(SqlReader) 则
SqlReader.Close()
SqlReader = 无
万一
If Not IsNothing(SqlCommand) Then
SqlCommand.Dispose()
SqlCommand = 无
万一
If Not IsNothing(SqlConnection) 则
SqlConnection.Close()
SqlConnection.Dispose()
SqlConnection = 无
万一
结束尝试
结束子
公共共享子 CreateHTMLSelectContainer(ByRef PlaceHolder 作为对象,ByVal 过滤器列表作为列表(过滤器对象),ByVal ID 作为字符串)
将 ReturnString 调暗为 String = ""
对于FilterList中的每个Obj作为FilterObject
ReturnString += "开始选项标签" & Obj.Description & "结束选项标签"
下一个
将容器变暗为新 HtmlGenericControl("select")
Container.ID = "ddl" & ID
Container.Attributes.Add("class", "filtering_fields_select")
Container.InnerHtml = ReturnString
PlaceHolder.Controls.Add(容器)
如果 FilterList.Count > 20 则
PlaceHolder.Controls.Add(New LiteralControl("查找图像到这里"))
万一
结束子
Public Shared Sub CreateHTMLSelectString(ByVal FilterList As List(Of FilterObject), ByVal ID As String)
Dim ReturnString As String = "打开选择标签"
将 Obj 调暗为 FilterObject = 无
对于 FilterList 中的每个 Obj
ReturnString += "开始选项标签" & Obj.Description & "结束选项标签"
下一个
ReturnString += "关闭选择标签"
如果 FilterList.Count > 20 则
ReturnString += "查找图片放在这里"
万一
HttpContext.Current.Response.Write(ReturnString)
结束子