我有下面的密码。它抓取这样的数据:
name1,name4,name2,name3
这样的列表(是一个复选框):
名字1名字4名字2名字3
<%
Set DicionarioMyData = CreateObject("Scripting.Dictionary")
Set MyData= TarefasConexaoMSSQL.Execute("SELECT A FROM TABLE")
If Not MyData.EOF Then
Do While Not MyData.EOF
ItensDoMyData = MyData("A")
If Not IsNull(ItensDoMyData) Then
ItensSeparadosDoMyData = Split(ItensDoMyData, ",")
For i = 0 To UBound(ItensSeparadosDoMyData)
ItensDoMyData = Trim(ItensSeparadosDoMyData(i))
If Not DicionarioMyData.Exists(ItensDoMyData) Then
DicionarioMyData.Add ItensDoMyData, i
%>
<input name="itens" type="checkbox" value="<% Response.Write ItensDoMyData %>"><label><% Response.Write ItensDoMyData %></label>
<%
End If
Next
End If
MyData.MoveNext
End If
%>它正在工作,但我无法对其进行排序,因此正确的输出应该是:
名字1名2名3名4
能把这类输出分类吗?
发布于 2012-07-03 20:04:21
VBScript没有提供很好的排序选项,但是在任何远程现代化的情况下,您都可以访问.NET提供的COM可见类,其中一个是System.Collections.SortedList类。
因此,您的代码可以看起来更像这样
Dim sl : Set sl = CreateObject("System.Collections.SortedList")
Dim rs : Set rs = conn.Execute("SELECT SomeField FROM SomeTable")
If Not rs.EOF Then
Do While Not rs.EOF
If Not IsNull(rs("SomeField")) Then
AddStringListToSortedList rs("SomeField"), sl
End If
Loop
End If
rs.Close
For i = 0 To sl.Count - 1
WriteCheckBox sl.GetKey(i)
Next
Sub AddStringListToSortedList(stringList, sortedList)
Dim arr: arr = Split(stringList, ",")
Dim i, item
For i = 0 To UBound(arr)
item = Trim(arr(i))
If item <> "" Then
If Not sortedList.Contains(item) Then
sortedList.Add item, i
End If
End If
Next
End Sub
Function WriteCheckbox(value)
%>
<input name="itens" type="checkbox" value="<%=Server.HTMLEncode(value)%>" /><label><%=Server.HTMLEncode(value) %></label>
<%
End Function https://stackoverflow.com/questions/11317541
复制相似问题