【问题标题】:2D array from C# to Javascript从 C# 到 Javascript 的二维数组
【发布时间】:2014-07-02 10:41:16
【问题描述】:

我已从数据库中检索数据,并将其存储在二维数组(锯齿状)中。

SqlConnection con = new SqlConnection("Data Source=COMP7;Initial Catalog=GK_Practice;User ID=sa;Password=SQLEXPRESS");
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select * from employee";
con.Open();

SqlDataReader rd = cmd.ExecuteReader();

int rowcount=0, columncount;

while(rd.Read())
{
    rowcount++;            
}

columncount = rd.FieldCount;
rd.Close();
rd = cmd.ExecuteReader();

string[][] str=new string[rowcount][];
int i = 0;
while(rd.Read())
{
   str[i] = new string[columncount];
   for (int j = 0; j < columncount; j++)
   {
       str[i][j] = rd.GetValue(j).ToString();
   }
   i++;
}

Label2.Text = str[1][1].ToString();
JavaScriptSerializer js = new JavaScriptSerializer();
string json = js.Serialize((object)str);
Response.Write(json);
rd.Close();
con.Close();

现在我已将其序列化,以便作为 JSON 传递,以便在客户端(浏览器)上使用。当我说Response.Write(json); 时,它会给出以下输出:

 [["1","John","xyz","12000"],["2","Mike","pqr","15000"],["3","Nick","fjdu","18000"],["4","Brad","wee","22000"]]

但我希望将这些数据存储在 JavaScript 变量中(比如 \var x)并将其用作 x[0][1]。

这可能吗?

【问题讨论】:

    标签: c# javascript jquery json multidimensional-array


    【解决方案1】:

    您可以创建一个 c# 函数并从客户端调用它。您必须在 GetData 函数中编写相同的代码,并且在您使用 JavaScriptSerializer 进行序列化时返回字符串。

    var Json = <%= GetData(); %>
    

    这将呈现这样的页面,

    var Json = [["1","John","xyz","12000"],["2","Mike","pqr","15000"],["3","Nick","fjdu","18000"],["4","Brad","wee","22000"]]
    

    您可以访问像 Json[0][0] 这样的值,将返回 1。

    背后的代码

    public partial class Somepage : System.Web.UI.Page
    {
        public string GetData()
        {
            SqlConnection con = new SqlConnection("Data Source=COMP7;Initial Catalog=GK_Practice;User ID=sa;Password=SQLEXPRESS");
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "select * from employee";
            con.Open();
    
            SqlDataReader rd = cmd.ExecuteReader();
    
            int rowcount=0, columncount;
    
            while(rd.Read())
            {
                rowcount++;            
            }
    
            columncount = rd.FieldCount;
            rd.Close();
            rd = cmd.ExecuteReader();
    
            string[][] str=new string[rowcount][];
            int i = 0;
            while(rd.Read())
            {
               str[i] = new string[columncount];
               for (int j = 0; j < columncount; j++)
               {
                   str[i][j] = rd.GetValue(j).ToString();
               }
               i++;
            }
    
            Label2.Text = str[1][1].ToString();
            JavaScriptSerializer js = new JavaScriptSerializer();
            string json = js.Serialize((object)str);
            rd.Close();
            con.Close();
    
            return json;
        }
    
        protected void Page_Load(object sender, EventArgs e)
        {
            // Just to feel you this is code behind
        }
    }
    

    克林特端(Javascript)

    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script type="text/javascript">
    
            var Json = <%= GetData(); %>
    
        </script>
    </head>
    

    【讨论】:

    • 1) 您使用的是 mvc 还是 webform 应用程序? 2) 确保函数以字符串格式返回正确的 json。 3) 渲染是否按预期正确?
    • 我正在使用 asp.net 网站。如前所述,如果我说 Response.Write(json);然后它在浏览器上给出正确的输出,即 [["1","John","xyz","12000"],["2","Mike","pqr","15000"],["3" ,"尼克","fjdu","18000"],["4","布拉德","wee","22000"]]
    • @Gk_999 立即查看答案
    • var Json = &lt;%= GetData(); %&gt; 不是一个好的代码。如果GetData() 返回 null 怎么办!该页面将注定失败。
    • 从 -
    【解决方案2】:

    试试这个

    var sb = new StringBuilder();
        sb.Append("<script>");
        sb.Append(string.Format("var jsonObj ={0}", json));
        sb.Append("</script>");
        ClientScript.RegisterStartupScript(this.GetType(), "jsonObjVar", sb.ToString());
    

    然后在您的 dom 中,您将拥有全局变量名称 jsonObj。

    【讨论】:

      【解决方案3】:

      根据您使用的是 MVC razor 还是 ASP,语法会在视图上有所改变。 使用 MVC razor 您只需将字符串放入模型变量(放入控制器)并访问页面。

      var json = @model.MyString;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-04
        • 1970-01-01
        • 2013-11-23
        • 2014-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-23
        相关资源
        最近更新 更多