我有以下代码......它抓取这样的数据:
name1,name4,name2,name3
和这样的列表([]是一个复选框):
[] name 1 [] name 4 [] name 2 [] name 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
%>
它正在工作,但我无法对其进行排序,因此正确的输出应为:
[] name 1 [] name 2 [] name 3 [] name 4
是否可以对这种输出进行排序?
答案 0 :(得分:1)
VBScript并没有提供良好的排序选项,但是在远程现代的任何东西上,您都可以访问.NET提供的COM Visible类,其中一个是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