我是Datarow Collection字符串数组。我想将这个数组传递给javascript并对它们进行操作。我该怎么做
答案 0 :(得分:2)
我建议使用DataContractJsonSerializer
。
这是一个简单的函数,可以将任何可序列化的对象转换为JSON:
using System;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Text;
public static string ToJson<T>(this T input)
{
var serializer = new DataContractJsonSerializer(typeof(T));
using (var stream = new MemoryStream())
{
serializer.WriteObject(stream, input);
var jsonText = Encoding.UTF8.GetString(stream.ToArray());
return jsonText;
}
}
以下是我在string[]
上使用它的示例:
static void Main()
{
var input = new[] { "one", "two", @"three ""with quotes""!", "↑" };
Console.WriteLine(input.ToJson());
Console.ReadLine();
}
正如预期的那样输出:
["one","two","three \"with quotes\"!","↑"]
现在,在您的问题中,您提到DataRow
,因此您需要将DataRow
对象转换为可在此处传递的内容。我认为ItemArray
属性正是您所寻找的:
public string DataRowToJson(DataRow dr)
{
return dr.ItemArray.ToJson();
}
答案 1 :(得分:0)
除了HTML之外,没有什么可以阻止你使用ASP.NET控件。我经常发现自己使用转发器来创建Javascript数组。
<script type="text/javascript">
<asp:Repeater ID="WhateverRepeater" runat="server">
<HeaderTemplate>
var data = [
</HeaderTemplate>
<ItemTemplate>"<%# Container.DataItem %>"</ItemTemplate>
<SeparatorTemplate>,
</SeparatorTemplate>
<FooterTemplate>
];
</FooterTemplate>
</asp:Repeater>
</script>
将您的数据绑定到该转发器,它将转储出一个Javascript数组,如下所示:
var data = [
"string0",
"string1",
"string2",
"string3"
];
然后,您可以像在任何其他JS数组中一样在客户端代码中使用它。
(在没有编译器存在的情况下执行此操作,因此某些细节可能已关闭)