将 2D 数组从 Code Behind 传递给 JavaScript
pass 2d array from code behind to javascript
我有一个从数据库中获取的DataTable,我想在代码后面创建一个2d数组(一旦我得到DataTable..),然后将其作为2d数组传递给Javascript。
这是我尝试编码的内容:
int[,] videoQarray = new int[dt_questionVideo.Rows.Count,dt_questionVideo.Columns.Count ];
string[,] videoQarrayTitle = new string[dt_questionVideo.Rows.Count, dt_questionVideo.Columns.Count ];
for (var i = 0; i < dt_questionVideo.Rows.Count ; i++)
{
for (int j = 0; j < dt_questionVideo.Columns.Count; j++)
{
videoQarray[i,j] = Convert.ToInt32(dt_questionVideo.Rows[i][0]);
videoQarrayTitle[i,j] = dt_questionVideo.Rows[i][1].ToString();
}
}
string createArrayScript = string.Format("var videQarray = [{0}];", string.Join(",", videoQarray));
createArrayScript += string.Format("var videQarrayList = [{0}];", string.Join(",", videoQarrayTitle));
Page.ClientScript.RegisterStartupScript(this.GetType(), "registerVideoQArray", createArrayScript, true);
好吧,在浏览器控制台中它说未定义videoQarray。我想知道我怎样才能正确地做到这一点..
变量可能是在函数中定义的,因此对于代码的其他部分是隐藏的。尝试使用"window.videoQArray"而不是"var":
string createArrayScript = string.Format("window.videQarray = [{0}];", string.Join(",", videoQarray));
createArrayScript += string.Format("window.videQarrayList = [{0}];", string.Join(",", videoQarrayTitle));
编辑:这是一个 2d 数组(好的,你在问题中写得很清楚,但我没有看到)。使用JavaScriptSerializer
:
var serializer = new JavaScriptSerializer();
string createArrayScript = string.Format("window.videQarray = {0};", serializer.Serialize(videoQarray));
createArrayScript += string.Format("window.videQarrayList = {0};", serializer.Serialize(videoQarrayTitle));
使用以下函数:
public static string ArrayToString2D(string[,] arr)
{
StringBuilder str = new StringBuilder();
str.Append("[['");
for (int k = 0; k < arr.GetLength(0); k++)
{
for (int l = 0; l < arr.GetLength(1); l++)
{
if (arr[k, l] == null)
str.Append("','");
else
str.Append(arr[k, l].ToString() + "','");
}
str.Remove(str.Length - 2, 2);
str.Append("],['");
}
str.Remove(str.Length - 4, 4);
str.Append("]]");
return str.ToString();
}
在代码隐藏中具有以下属性:
private string[,] upperLabels ;
public string UpperLabel
{
get
{ return Utils.ArrayToString2D(upperLabels); }
}
在JavaScript中使用以下:
var upperSplitted = <%=UpperLabel%> ;
var value = upperSplitted[0][0];
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 将 2D 数组从 Code Behind 传递给 JavaScript
- Javascript Regex Look behind
- Javascript中的特定正则表达式正面外观(around|ahead|behind)
- 从Javascript调用Code-Behind函数
- 如何将数组参数从Code-behind传递给javascript
- code-behind-从JavaScript确认框调用函数
- 如何在没有隐藏字段的情况下将JavaScript变量发送到(asp-net-code-behind)c#
- 从 JavaScript 调用 Code Behind Function(不是 AJAX!)
- JavaScript: Alert.Show(message) From ASP.NET Code-behind