2016-05-02 5 views
0

Ich habe das folgende C#, das Daten von Stored Procedures abruft, aber das fee_chart Diagramm rendert nicht. Aber wenn ich die result_chart und die Klassen entfernen, die damit verbunden sind (BindChartResult und GetChartDataResult) rendert es gut, aber ich muss beides anzeigen. Ich bin mir nicht sicher, wo ich einen Fehler gemacht habe. Jede Hilfe würde sehr geschätzt werden.Mehrere Google Charts auf einer Seite anzeigen C#

C#

public partial class feestatistics: System.Web.UI.Page { 
    protected void Page_Load(object sender, EventArgs e) { 

    if (!Page.IsPostBack) { 
    string query = "SELECT DISTINCT year.year_title, year.year_id FROM year"; 
    DataTable dt = GetData(query); 
    ddlyear.DataSource = dt; 
    ddlyear.DataTextField = "year_title"; 
    ddlyear.DataValueField = "year_id"; 
    ddlyear.DataBind(); 
    ddlyear.Items.Insert(0, new ListItem("All", "All")); 
    ddlyear.Items.Insert(0, new ListItem(" - Select -", "")); 
    } 

    } 


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

    try { 
    dsChartData = GetChartDataFees(); 

    strScript.Append(@ "<script type='text/javascript'> 
     google.load('visualization', '1', { 
     packages: ['corechart'] 
     }); < /script> 

     < script type = 'text/javascript' > 

     function drawChart() { 
     var data = google.visualization.arrayToDataTable([ 
      ['status', 'total'], "); 

      foreach(DataRow row in dsChartData.Rows) { 
      strScript.Append("['" + row["status"] + "'," + row["total"] + "],"); 
      } 
      strScript.Remove(strScript.Length - 1, 1); 
      strScript.Append("]);"); 

      strScript.Append(@ " var options = {  
      title: 'Fee Statistics', 
      is3D: false, 
      }; 
      "); 

      strScript.Append(@ "var chart = new google.visualization.PieChart(document.getElementById('fee_chart'));   
      chart.draw(data, options); 
      } 
      google.setOnLoadCallback(drawChart); 
      "); 
      strScript.Append(" </script>"); 

      ltScripts.Text = strScript.ToString(); 
     } catch {} 

     } 

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

      try { 
      dsChartData = GetChartDataResult(); 

      strScript.Append(@ "<script type='text/javascript'> 
      google.load('visualization', '1', { 
       packages: ['corechart'] 
      }); < /script> 

      < script type = 'text/javascript' > 

      function drawChart() { 
       var data = google.visualization.arrayToDataTable([ 
       ['status', 'total'], "); 

       foreach(DataRow row in dsChartData.Rows) { 
       strScript.Append("['" + row["status"] + "'," + row["total"] + "],"); 
       } 
       strScript.Remove(strScript.Length - 1, 1); 
       strScript.Append("]);"); 

       strScript.Append(@ " var options = {  
       title: 'Pass/Fail Statistics', 
       is3D: false, 
       }; 
       "); 

       strScript.Append(@ "var chart = new google.visualization.PieChart(document.getElementById('result_chart'));   
       chart.draw(data, options); 
       } 
       google.setOnLoadCallback(drawChart); 
       "); 
       strScript.Append(" </script>"); 

       ltScripts.Text = strScript.ToString(); 
       } catch {} 

       } 

       private DataTable GetChartDataFees() { 
       if (ddlyear.SelectedValue == "All") { 
       DataSet dsData = new DataSet(); 
       try { 
       SqlConnection sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 
       SqlDataAdapter sqlCmd = new SqlDataAdapter("GetFeeStatistics", sqlCon); 
       sqlCmd.SelectCommand.CommandType = CommandType.StoredProcedure; 

       sqlCon.Open(); 

       sqlCmd.Fill(dsData); 

       sqlCon.Close(); 
       } catch { 
       throw; 
       } 
       return dsData.Tables[0]; 
       } else { 
       DataSet dsData = new DataSet(); 
       try { 
       SqlConnection sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 
       SqlDataAdapter sqlCmd = new SqlDataAdapter("GetFeeStatisticsYear", sqlCon); 
       sqlCmd.SelectCommand.Parameters.AddWithValue("@year", ddlyear.SelectedValue); 
       sqlCmd.SelectCommand.CommandType = CommandType.StoredProcedure; 

       sqlCon.Open(); 

       sqlCmd.Fill(dsData); 

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

       private DataTable GetChartDataResult() { 
       if (ddlyear.SelectedValue == "All") { 
       DataSet dsData = new DataSet(); 
       try { 
       SqlConnection sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 
       SqlDataAdapter sqlCmd = new SqlDataAdapter("GetResultStatistics", sqlCon); 
       sqlCmd.SelectCommand.CommandType = CommandType.StoredProcedure; 

       sqlCon.Open(); 

       sqlCmd.Fill(dsData); 

       sqlCon.Close(); 
       } catch { 
       throw; 
       } 
       return dsData.Tables[0]; 
       } else { 
       DataSet dsData = new DataSet(); 
       try { 
       SqlConnection sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 
       SqlDataAdapter sqlCmd = new SqlDataAdapter("GetResultStatisticsYear", sqlCon); 
       sqlCmd.SelectCommand.Parameters.AddWithValue("@year", ddlyear.SelectedValue); 
       sqlCmd.SelectCommand.CommandType = CommandType.StoredProcedure; 

       sqlCon.Open(); 

       sqlCmd.Fill(dsData); 

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

       protected void ddlyear_SelectedIndexChanged(object sender, EventArgs e) { 
       //call BindChartFees 
       BindChartFees(); 
       //call BindChartResult 
       BindChartResult(); 
       } 

       private static DataTable GetData(string query) { 
       DataTable dt = new DataTable(); 
       SqlCommand cmd = new SqlCommand(query); 
       String constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
       SqlConnection con = new SqlConnection(constr); 
       SqlDataAdapter sda = new SqlDataAdapter(); 
       cmd.CommandType = CommandType.Text; 
       cmd.Connection = con; 
       sda.SelectCommand = cmd; 
       sda.Fill(dt); 
       return dt; 
       } 
      } 

ASP.NET

<div class="row"> 
    <div class="col-12"> 
     <div class="panel"> 
      <asp:DropDownList ID="ddlyear" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlyear_SelectedIndexChanged"></asp:DropDownList> 
     </div> 
     <div> 
     </div> 
    </div> 
</div> 
<br /> 


<div class="row"> 
    <div class="col-12"> 
     <div class="panel"> 
      <div> 
       <asp:Literal ID="ltScripts" runat="server"></asp:Literal> 
       <div id="fee_chart" style="width: auto; height: 500px;"> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 
<br /> 

<div class="row"> 
    <div class="col-12"> 
     <div class="panel"> 
      <div> 
       <asp:Literal ID="Literal1" runat="server"></asp:Literal> 
       <div id="result_chart" style="width: auto; height: 500px;"> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 
+0

@DespeiL Man verwendet 'fee_chart' nicht? Diese Codezeile? 'strScript.Append (@" var chart = neu google.visualization.PieChart (document.getElementById ('fee_chart')); chart.draw (Daten, Optionen); ' – mcclosa

Antwort

0

die Lösung für mein Problem gefunden in BindChartResult Ich brauchte ltScripts.Text = strScript.ToString();-Literal1.Text = strScript.ToString(); zu ändern, um die Literal Kontrolle in meiner aspx-Datei zu entsprechen.

Verwandte Themen