2014-05-14 2 views
2

Я получил данные из базы данных, и я сохранил его в 2D-массиве (зубчатый).2D-массив от C# до Javascript

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 (скажем \ вар х) и использовать его как х [0] [1].

Возможно ли это?

ответ

4

Вы можете создать функцию 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 
    } 
} 

Clint стороне (Ява скрипт)

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script type="text/javascript"> 

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

    </script> 
</head> 
+0

Что будет возвращать функция GetData ??? PLZ разработать abt функции C# –

+0

Ответ отредактирован, pl check –

+0

Не работает, plz help ... !!! –

0

попробовать этот

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()); 

то в вашем йот вы будете иметь имя глобальной переменной jsonObj.

0

В зависимости от используемой бритвы MVC или ASP синтаксис немного изменится на вид. Используя бритву MVC, вы просто должны поместить строку в переменную модели (в контроллер) и получить доступ к странице.

var json = @model.MyString; 
Смежные вопросы