VB 多维数组 (arrHotelsProdCols) 是在经典 .ASP vb 中创建的:
strSQLHotelsProdCols = "SELECT * FROM qryHotelProdCols"
rsHotelsProdCols.Open strSQLHotelsProdCols, ConString
arrHotelsProdCols = rsHotelsProdCols.GetRows
VB 数组工作正常,超过 600 行,4 列。我可以循环遍历它并将其显示在源 .asp 文件 html 等的表格中。
我想向现有的 validateform.js“包含”文件添加一个函数,该函数将在与 VB 多维数组相同的 .asp 文件中触发现有表单中一个下拉列表的 onchange,搜索唯一值并填充其他值表单中的字段与多维数组中同一行中的其他值 - 这部分对我来说并不是那么困难,如果我到达那里时遇到困难,那就是另一个问题了。
1) 如何将 VB 多维数组转换并传递为 JavaScript 数组以在 validateform.js 文件中使用?
最佳答案
说明
事实上,正如您的问题所述,VB 数组可以是多维的。 但是JScript 数组不能是多维的:它们只是一维。 (参见。https://wiki.mcneel.com/developer/scriptsamples/arrays)
解决方案
因此,解决方案是列出 JScript 一维数组的所有元素,并尝试检测何时到达新的“行”。我们怎么知道这一点?我们可以简单地知道,当RowNumber Modulus NumberOfColumns为零时,那么它实际上是一个新行。 这可能看起来有点“hacky”,但即使在生产环境中,它也是 100% 功能齐全的:-) 以下是 VBScript 部分和 JScript 部分的源代码:
VBScript 部分
<%
'Declare SQL Statement
Dim strSQLHotelsProdCols
strSQLHotelsProdCols = "SELECT * FROM qryHotelProdCols"
'Execute SQL Statement
rsHotelsProdCols.Open strSQLHotelsProdCols, ConString
'Populate Two-Dimensional VB Array
arrHotelsProdCols = rsHotelsProdCols.GetRows
%>
JScript 部分
<script runat="server" language="JavaScript">
//Convert a VBScript Two-Dimensional array => To => JScript One-Dimensional array
//Yes : Infortunately, JScript can only manage 1-Dimension Arrays !
var tmp_VBArray = new VBArray(arrHotelsProdCols);
var tmp_VBArrayInJs = (tmp_VBArray).toArray();
//As all the "VB columns" (2-dimension array) have been converted into "JS rows" (1-dimension array),
//We will manually detect when a new Row has started using the modulus (%) operator :-)
//For each row in the One-Dimension JScript array
for (var iRow = 0; iRow < tmp_VBArrayInJs.length; iRow++) {
//Test if a new row has started
var testNewRow = (iRow + 1) % (tmp_VBArray.ubound(1) + 1);
//If a new row is detected
if (testNewRow == true){
response.write('<br>=> NEW ROW STARTED<br>');
}
//Write the fields
response.write('<strong>'+iRow+'. </strong>');
response.write(tmp_VBArrayInJs[iRow] + '<br>');
}
</script>
关于javascript - 如何转换经典 .ASP VB 多维数组(来自记录集)以便在 javascript .js 文件中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31014145/