我有下面的代码...它获取这样的数据:
姓名 1、姓名 4、姓名 2、姓名 3
并像这样列出([ ] 是一个复选框):
[ ] 姓名 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
是否可以对这种输出进行排序?
VBScript 不提供良好的排序选项,但是在任何现代的东西上,您都可以访问 .NET 提供的 COM Visible 类,其中之一是System.Collections.SortedList
class.
因此你的代码看起来更像这样
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)