asp.net如何將后臺c#數(shù)組傳給前臺js?

字號:


    如何把后臺的c#數(shù)組傳給前端的js,所以這個問題困擾了很久,后來在一篇文章中看到解決辦法,文章中的方法處理的是定長數(shù)組,我現(xiàn)在處理的是不定長的,所以我又在文章的基礎(chǔ)上修改了一下。自己親自的實踐了一下并應(yīng)用在自己的程序中,果然解決了問題?,F(xiàn)在結(jié)合大牛的文章和我自己的親身實踐來說明一下這個問題是如何解決的。
    第一步:定義cs數(shù)組
    cs文件里后臺程序中要有數(shù)組,這個數(shù)組要定義成公共的數(shù)組。
    public string[] lat = null;
    public string[] lng = null;
    第二步:給cs數(shù)組賦值
    cs數(shù)組的值一般都是從數(shù)據(jù)庫中取到的,相信大家也都會,且后邊的代碼中也會有描寫,這里就不做詳細的解釋。
    第三步:將cs數(shù)組賦給前端的js數(shù)組
    這個步驟是關(guān)鍵,我選用的方法就是<%=cs數(shù)組%>。這樣模糊的說法也是百度得到的,賦值會用到循環(huán),即會一個元素一個元素的賦值。
    后臺cs代碼
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.OleDb;
    using System.Data;
    using System.Collections;
    public partial class VideoSource : System.Web.UI.Page
    {
    public string[] lat = null;//存放緯度值
    public string[] lng = null;//存放經(jīng)度值
    public int lng_len = 0;//用于獲得數(shù)組長度
    public int k = 0;//用于賦值循環(huán)
    protected void Page_Load(object sender, EventArgs e)
    {
    ArrayList lng_list = new ArrayList();
    ArrayList lat_list = new ArrayList();
    OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("App_Data/Database1.accdb"));
    con.Open();
    string sql = "select * from tb_videos";
    try
    {
    OleDbDataAdapter gh = new OleDbDataAdapter(sql, con);
    DataSet ds = new DataSet();
    gh.Fill(ds);
    con.Close();
    foreach (DataRow DR in ds.Tables[0].Rows)
    {
    lng_list.Add(DR[2].ToString());
    lat_list.Add(DR[3].ToString());
    }
    }
    catch
    {
    con.Dispose();
    }
    lng = (string[])lng_list.ToArray(typeof(string));
    lat = (string[])lat_list.ToArray(typeof(string));
    lng_len = lng_list.Count;
    }
    aspx代碼
    <script type="text/javascript">
    var jingdu = new Array();
    var weidu = new Array();
    <%
    for(int k=0;k<lng_len;k++){
    %>
    jingdu.push("<%=lng[k]%>");
    weidu.push("<%=lat[k]%>");
    <%
    }
    %>
    var latlng=[];
    for(var i=0;i<jingdu.length;i++){
    latlng.push(new google.maps.LatLng(jingdu[i],weidu[i]));
    }
    </script>
    上述代碼即為我解決問題所用代碼,均已試驗通過。