簡體   English   中英

從C#到Javascript的2D數組

[英]2D array from C# to Javascript

我從數據庫中檢索了數據,並將其存儲在2D數組中(鋸齒狀)。

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]。

那有可能嗎?

您可以創建ac#函數並從客戶端調用它。 與您必須在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>

嘗試這個

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。

根據您使用的是MVC剃須刀或ASP,語法在視圖上會有所變化。 使用MVC剃須刀,您只需要將字符串放入模型變量(放入控制器)並訪問頁面。

var json = @model.MyString;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM