代码之家  ›  专栏  ›  技术社区  ›  gizgok

如何将值的数据行数组传递给javascript

  •  2
  • gizgok  · 技术社区  · 14 年前

    我有字符串的数据行集合数组。我想把这个数组传递给javascript并对它们进行操作。我该怎么做呢?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Timwi    14 年前

    我建议利用 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 ,所以你需要 数据行 物体变成你可以通过的东西。我认为 ItemArray 属性是您要查找的内容:

    public string DataRowToJson(DataRow dr)
    {
        return dr.ItemArray.ToJson();
    }
    
        2
  •  0
  •   Pike65    14 年前

    除了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数组一样。

    (在没有编译器的情况下执行此操作,因此某些详细信息可能已关闭)