using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Configuration;
using System.Data;
using MySql.Data.MySqlClient;
public partial class Username_Performance : System.Web.UI.Page
{
StringBuilder str = new StringBuilder();
MySqlConnection conn = new MySqlConnection("server=****;user id=****;Password=****;database=****");
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false)
{
BindChart();
}
}
private DataTable GetData(int userName)
{
//var userName = 1;
DataTable dt = new DataTable();
if (Session["MyData"] != null)
{
dt = (DataTable)Session["MyData"];
}
else
{
string cmd = "SELECT User_Name,Status,COUNT(Status),YEAR(Start_Date_Time) As LASTYEAR FROM sh_report WHERE 'YEAR(Start_Date_Time)' >= DATE_SUB(CURDATE(),INTERVAL 1 YEAR) AND User_Name=@userName GROUP BY YEAR(Start_Date_Time) ORDER BY YEAR(Start_Date_Time) Asc LIMIT 1,2";
using (MySqlCommand Mycmd = new MySqlCommand(cmd, conn))
{
using (MySqlDataAdapter ad = new MySqlDataAdapter(Mycmd))
{
MySqlParameter prm = new MySqlParameter("@userName", MySqlDbType.VarChar);
prm.Value = userName;
Mycmd.Parameters.Add(prm);
ad.Fill(dt);
}
}
}
Session["MyData"] = dt;
return dt;
}
private void BindChart()
{
DataTable dt = new DataTable();
try
{
dt = (DataTable)Session["MyData"];
str.Append(@"<script type=text/javascript> google.load( *visualization*, *1*, {packages:[*gauge*]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string','LASTYEAR');
data.addColumn('number','COUNT(Status)');
data.addColumn('string','User_Name');
data.addRows(" + dt.Rows.Count + ");");
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
str.Append("data.setValue(" + i + "," + 0 + "," + "'" + dt.Rows[i]["LASTYEAR"].ToString() + "');");
str.Append("data.setValue(" + i + "," + 1 + "," + dt.Rows[i]["COUNT(Status)"].ToString() + ");");
}
str.Append("var options = {'title':'Last Year And Current Year Statistics','width':400,'height':400,'redFrom':90,'redTo':100,'yellowFrom':75,'yellowTo':90,'minorTicks':5};");
str.Append("var chart = new google.visualization.Gauge(document.getElementById('chart_div'));");
str.Append("chart.draw(data,options);}");
str.Append("</script>");
lt.Text = str.ToString().TrimEnd(',').Replace('*', '"');
}
catch
{ }
}
protected void ClearSession(object sender, EventArgs e)
{
Session.Remove("MyData");
}
}
如果特定用户登录,我需要根据用户名检索数据。它必须仅为登录用户检索数据,而不是所有数据。
当我执行上面的代码时,它不会显示任何内容,无论是正确还是错误。
答案 0 :(得分:0)
在BindChart()方法中更改此行
dt =(DataTable)Session [&#34; MyData&#34;];
到
dt = GetData(userName);
其中userName将记录在用户中并删除会话用于存储数据表。