2017-08-21 59 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

谢谢你的澄清。 –