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 caption="每周推广数据" xAxisName="渠道商名称" yAxisName="每周推广数">
      <set label="1" value="2823" />
      <set label="2" value="3579" />
      <set label="3" value="6679" />
 </chart>

数据形式2:

- <chart caption="Break-up of Annual Revenue" subcaption="In Million $" xaxisname="Year" Yaxisname="Sales in M$" numdivlines="3" numberPrefix="$" numberSuffix="M" showSum="1">
-      <categories font="Arial" fontSize="12" fontColor="000000">
          <category label="2001" />
          <category label="2002" />
          <category label="2003" />
          <category label="2004" />
         <category label="2005" />
    </categories>
-     <dataset>
-         <dataSet seriesName="Product A" color="AFD8F8" showValues="0">
                <set value="30" />
                 <set value="26" />
                <set value="29" />
                <set value="31" />
                <set value="34" />
      </dataSet>
-        <dataSet seriesName="Product B" color="F6BD0F" showValues="0">
                <set value="21" />
                <set value="28" />
                <set value="39" />
                <set value="41" />
                <set value="24" />
     </dataSet>
  </dataset>
《/chart>
效果:




posted @ 2011-06-02 11:07  oY_211  阅读(559)  评论(0编辑  收藏  举报