[英]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.