2017-08-21 60 views
0

我試圖創建一個顯示從數據谷歌的圖表中的SQL數據庫的Asp.net應用程序生成的腳本中的JavaScript變量。現在,我只是試圖將C#int變量的值傳遞給JavaScript變量。我會在稍後找出其餘的。傳遞一個C#變量值在代碼隱藏類

我已創建的C#變量: 公衆詮釋timcs = 40;

我嘗試創建JavaScript變量並將其顯示在警告框中: var timjs ='<%= timcs%>'; alert(timjs);

產生的警告框只是說:<%= timcs%>。

如果我變種timjs = <%= timcs%>; (沒有引號)它根本不起作用。

我已經嘗試了許多不同的方法,它從來沒有工作。我究竟做錯了什麼?所有的代碼如下。

謝謝。

using System; 
using System.Web.UI; 
using System.Data.SqlClient; 
using System.Data; 
using System.Configuration; 
using System.Text; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI.WebControls; 


namespace TheBIGContest 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 

     public int timsc = 40; 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 
       // Bind Gridview 
       BindGvData(); 

       // Bind Charts 
       BindChart(); 
      } 
     } 

     private void BindGvData() 
     { 
      gvData.DataSource = GetChartData(); 
      gvData.DataBind(); 
     } 

     private void BindChart() 
     { 
      DataTable dsChartData = new DataTable(); 
      StringBuilder strScript = new StringBuilder(); 

      try 
      { 

       dsChartData = GetChartData(); 

       strScript.Append(@"<script type='text/javascript'> 

       // Load the Visualization API and the corechart package. 
       google.charts.load('current', { 'packages': ['corechart'] });</script> 

        <script type='text/javascript'> 
        // Set a callback to run when the Google Visualization API is loaded. 
        google.charts.setOnLoadCallback(drawChart); 

        var timjs = '<%=timcs %>'; 
        alert(timjs); 

        // Callback that creates and populates a data table, 
        // instantiates the pie chart, passes in the data and 
        // draws it. 

        function drawChart() { 

        // Create the data table. 
        var data = new google.visualization.DataTable(); 
        data.addColumn('string', 'Person'); 
        data.addColumn('number', 'Points'); 
        data.addRows([ ['Tim', 10], ['Barb', 20], ['Lee Ann', 30] ]);"); 

       //Set chart options 
       strScript.Append("var options = {'title':'Points to Date', chartArea: { left: 43, top: 50, width: '80 %', height: '80%' }, backgroundColor: 'fff', 'width': 610, 'height':450, 'vAxis': { minValue: 0, ticks: [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50]}, 'legend':'none'};"); 

       // Instantiate and draw our chart, passing in some options. 
       strScript.Append("var chart = new google.visualization.ColumnChart(document.getElementById('chart_div')); chart.draw(data, options); }"); 
       strScript.Append("</script>"); 

       ltScripts.Text = strScript.ToString(); 
      } 
      catch 
      { 
      } 
      finally 
      { 
       dsChartData.Dispose(); 
       strScript.Clear(); 
      } 
     } 

     /// <summary> 
     /// fetch data from mdf file saved in app_data 
     /// </summary> 
     /// <returns>DataTable</returns> 
     private DataTable GetChartData() 
     { 
      DataSet dsData = new DataSet(); 
      try 
      { 
       SqlConnection sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString); 
       SqlDataAdapter sqlCmd = new SqlDataAdapter("GetData", sqlCon); 
       sqlCmd.SelectCommand.CommandType = CommandType.StoredProcedure; 

       sqlCon.Open(); 

       sqlCmd.Fill(dsData); 

       sqlCon.Close(); 
      } 
      catch 
      { 
       throw; 
      } 
      return dsData.Tables[0]; 
     } 
    } 
} 
+0

它,因爲你使用的是文本字符串所以它不執行服務器端代碼。我將在不帶文字(@)的單獨.Append方法中首先追加變量。你可以看看使用內插和文字字符串組合($ @),但你可能需要轉義一些括號等。 – WraithNath

+0

我試過「如何從ASP.NET變量給JavaScript變量數據?」它沒有工作。還有其他的錯誤。 –

+0

@WithithNath - 你能解釋一些嗎?我對此很感興趣。謝謝! –

回答

1

輸出標籤<%=%>不是在這種情況下,相關的,因爲你是從生成的代碼隱藏類的客戶端代碼,而不是實際的aspx頁面。

更改爲

var timjs = " + timcs + @"; ... 

,它會工作。

+0

達赫!這樣可行。謝謝。 –

0

它因爲你正在使用一個文字字符串,所以它不執行服務器端代碼。我將在不帶文字(@)的單獨.Append方法中首先追加變量。你可以看看使用插值和文字字符串組合($ @),但你可能需要一些逃跑的支架等

private void BindChart() 
      { 
       DataTable dsChartData = new DataTable(); 
       StringBuilder strScript = new StringBuilder(); 

       try 
       { 

        dsChartData = GetChartData(); 

        strScript.Append(@"<script type='text/javascript'> 

        // Load the Visualization API and the corechart package. 
        google.charts.load('current', { 'packages': ['corechart'] });</script> 

         <script type='text/javascript'> 
         // Set a callback to run when the Google Visualization API is loaded. 
         google.charts.setOnLoadCallback(drawChart); "); 

        strScript.Append($"var timjs = {timsc};"); 

        strScript.Append(@" 
         alert(timjs); 

         // Callback that creates and populates a data table, 
         // instantiates the pie chart, passes in the data and 
         // draws it. 

         function drawChart() { 

         // Create the data table. 
         var data = new google.visualization.DataTable(); 
         data.addColumn('string', 'Person'); 
         data.addColumn('number', 'Points'); 
         data.addRows([ ['Tim', 10], ['Barb', 20], ['Lee Ann', 30] ]);"); 

        //Set chart options 
        strScript.Append("var options = {'title':'Points to Date', chartArea: { left: 43, top: 50, width: '80 %', height: '80%' }, backgroundColor: 'fff', 'width': 610, 'height':450, 'vAxis': { minValue: 0, ticks: [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50]}, 'legend':'none'};"); 

        // Instantiate and draw our chart, passing in some options. 
        strScript.Append("var chart = new google.visualization.ColumnChart(document.getElementById('chart_div')); chart.draw(data, options); }"); 
        strScript.Append("</script>"); 

        ltScripts.Text = strScript.ToString(); 
       } 
       catch 
       { 
       } 
       finally 
       { 
        dsChartData.Dispose(); 
        strScript.Clear(); 
       } 
      } 
+0

謝謝你的澄清。 –