chart 和silverlight
silverlight:
view中代码
<div>
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
width="800" height="600">
<param name="source" value="/Content/Schart_using.xap" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.50826.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration: none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="获取 Microsoft Silverlight"
style="border-style: none" />
</a>
</object>
<iframe id="_sl_historyFrame" style="visibility: hidden; height: 0px; width: 0px;
border: 0px"></iframe>
</div>
添加一个新项:Schart.csproj
该项引用 SLVisifire.Charts.dll 添加服务器引用:地址为API中的“DataShowWS.asmx”
添加一个名为API的 文件夹,文件夹中创建一个 web服务名为:“DataShowWS.asmx”
DataShowWS.asmx.cs中:
using DataAnaysisSiteModel;
using DataAnalysisBLL;
写代码执行bll层的方法,取得数据
例:
[WebMethod]
public List<DataDayUsing> GetDataDayUsing(int? cuid, DateTime? begindate, DateTime? enddate)
{
BllDataAnalysis bll = new BllDataAnalysis();
return bll.GetDataDayUsingList(cuid, begindate, enddate);
}
Schart.csproj项目中的MainPage.xaml:
using Visifire.Charts;
using Schart.DataShowWS;
namespace Schart
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
{
Schart.DataShowWS.DataShowWSSoapClient ws = new DataShowWSSoapClient();
ws.GetDataDayUsingAsync(1, null, null); //ws中的方法被加Async后缀
ws.GetDataDayUsingAsync(2, null, null);
ws.GetDataDayUsingAsync(3, null, null);
ws.GetDataDayUsingCompleted += new
EventHandler<GetDataDayUsingCompletedEventArgs>(ws_GetDataDayUsingListCompleted);
}
void ws_GetDataDayUsingListCompleted(object sender, GetDataDayUsingCompletedEventArgs e)
{
DataSeries ds = new DataSeries();
ds.RenderAs = RenderAs.Column;
foreach (var item in e.Result)
{
DataPoint dp = new DataPoint();
dp.YValue = item.Count;
dp.XValue = item.Date;
ds.DataPoints.Add(dp);
ds.Name = "渠道商ID:" + item.CUID;
}
chart1.Series.Add(ds);
}
}
}
最后 将Schart.csproj项目中的Schart.xap文件复制到content中
chart
1。验证码方式显示分布图
view中:
<img id="img_chart" src="/DataView/DataDayActiveViewChart" alt="" /> 【引用控制器生成的图片】
<script type="text/javascript"> 【动态传递页面信息,以改变图片参数】
$("#btn_submit").click(function () {
var st = $("#Begintime").val();
var et = $("#Endtime").val();
var culist = $("#hidcuidlist").val();
var chart_src = "/DataView/DataDayActiveViewChart?hidcuidlist=" +
encodeURIComponent(culist) + "&Begintime=" + encodeURIComponent(st) +
"&Endtime=" + encodeURIComponent(et) + "&" + Math.random();
$("#img_chart").attr("src", chart_src);
});
</script>
控制器中:
public ActionResult DataDayActiveViewChart()
{
GetChannerUser();
var chart = new Chart(800, 600);
chart.AddTitle("每日激活数据分布图");
List<int> cuid_list = new List<int>();
try
{
DateTime begindate = DateTime.Now.AddDays(-1);
DateTime enddate = DateTime.Now;
string cuidlist = MVC4Common.Common.GetQueryString("hidcuidlist").ToString(); 【通过GetQueryString获取url中的hidcuidlist信息】
var strlist = cuidlist.Split(',');
foreach (string item in strlist)
{
if (!string.IsNullOrEmpty(item))
cuid_list.Add(Convert.ToInt32(item));
}
if (MVC4Common.Common.GetQueryString("Begintime").ToString().Trim() != "")
begindate = Convert.ToDateTime(MVC4Common.Common.GetQueryString("Begintime").ToString());
if (MVC4Common.Common.GetQueryString("Endtime").ToString().Trim() != "")
enddate = Convert.ToDateTime(MVC4Common.Common.GetQueryString("Endtime").ToString());
foreach (var item in cuid_list)
{
var list = dbll.GetDataDayActive(item, begindate, enddate);
chart.AddSeries(xValue: list, yValues: list, xField: "Date", yFields: "Count");
}
chart.Write();
}
catch { }
return null;
}
效果:
2
content中添加样式
view中:
<div id="chart_box">
</div>
<script type="text/javascript">
var chart_xml = "<chart caption='每周推广数据' xAxisName='渠道商名称' yAxisName='每周推广数'>";
chart_xml += "@Html.Raw(ViewBag.Data)";
chart_xml += "</chart>";
var myChart = new FusionCharts("/Content/Column3D.swf", "myChartId", "800", "600", "0", "1"); 【样式为3D柱状】
myChart.setXMLData(chart_xml);
myChart.render("chart_box");
</script>
control中:(组织数据包ViewBag.Data)
public ActionResult WeekPopView(int? fl)
{
CheckViewBag();
try
{
var bt = new DateTime(); //传入时间
bt = DateTime.Now;
if (MVC4Common.Common.GetPost("week_check").ToString().Trim() != "")
bt = Convert.ToDateTime(MVC4Common.Common.GetPost("week_check").ToString());
DateTime begindate = new DateTime();
DateTime enddate = new DateTime();
switch (bt.DayOfWeek)
{
case DayOfWeek.Friday:
begindate = bt.AddDays(-4);
enddate = bt.AddDays(2);
break;
case DayOfWeek.Monday:
begindate = bt;
enddate = bt.AddDays(6);
break;
case DayOfWeek.Saturday:
begindate = bt.AddDays(-5);
enddate = bt.AddDays(1);
break;
case DayOfWeek.Sunday:
begindate = bt.AddDays(-6);
enddate = bt;
break;
case DayOfWeek.Thursday:
begindate = bt.AddDays(-3);
enddate = bt.AddDays(3);
break;
case DayOfWeek.Tuesday:
begindate = bt.AddDays(-1);
enddate = bt.AddDays(5);
break;
case DayOfWeek.Wednesday:
begindate = bt.AddDays(-2);
enddate = bt.AddDays(4);
break;
}
var dt = new DataTable();
switch (Convert.ToInt32(MVC4Common.Common.GetPost("type").ToString()))
{
case 1:
dt = dbll.GetWeekInstallList(begindate, enddate);
break;
case 2:
dt = dbll.GetWeekActiveList(begindate, enddate);
break;
case 3:
dt = dbll.GetWeekUsingList(begindate, enddate);
break;
case 4:
dt = dbll.GetWeekUnInstallList(begindate, enddate);
break;
default:
break;
}
if (dt.Rows.Count > 0)
{
var xml = string.Empty;
foreach (DataRow item in dt.Rows)
{
xml += "<set label='" + item[0] + "' value='" + item[1] + "' />";
}
ViewBag.Data = xml;
}
else
{
ViewBag.Data = "";
}
}
catch { }
return View();
}
数据形式1:
</chart>
数据形式2:
效果:
![](https://pic002.cnblogs.com/images/2011/297677/2011060712245726.jpg)
![](https://pic002.cnblogs.com/images/2011/297677/2011060712250492.jpg)