C#上使用Echarts做报表

C#上使用Echarts做报表

.cs[设计]文件拖入控件

使用C#自带的内置网页控件 WebBrowser
控件名

在.cs文件中,对该内置页面进行属性设置

特殊代码位置的问题

//设置Com对外可访问     (在 .cs 文件中进行修改)
    [System.Runtime.InteropServices.ComVisible(true)]  //放在命名空间和类的中间(与class 同等级)

internal static void SetWebBrowserFeatures(int ieVersion)
        {
            // don't change the registry if running in-proc inside Visual Studio  
            if (LicenseManager.UsageMode != LicenseUsageMode.Runtime)
                return;
            //获取程序及名称  
            var appName = System.IO.Path.GetFileName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
            //得到浏览器的模式的值  
            UInt32 ieMode = GeoEmulationModee(ieVersion);
            var featureControlRegKey = @"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\";
            //设置浏览器对应用程序(appName)以什么模式(ieMode)运行  
            Registry.SetValue(featureControlRegKey + "FEATURE_BROWSER_EMULATION",
                appName, ieMode, RegistryValueKind.DWord);
            // enable the features which are "On" for the full Internet Explorer browser  
            //不晓得设置有什么用  
            Registry.SetValue(featureControlRegKey + "FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION",
                appName, 1, RegistryValueKind.DWord);
        }
        /// <summary>  
        /// 通过版本得到浏览器模式的值  
        /// </summary>  
        /// <param name="browserVersion"></param>  
        /// <returns></returns>  
        internal static UInt32 GeoEmulationModee(int browserVersion)
        {
            UInt32 mode = 11000; // Internet Explorer 11. Webpages containing standards-based !DOCTYPE directives are displayed in IE11 Standards mode.   
            switch (browserVersion)
            {
                case 7:
                    mode = 7000; // Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode.   
                    break;
                case 8:
                    mode = 8000; // Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode.   
                    break;
                case 9:
                    mode = 9000; // Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.                      
                    break;
                case 10:
                    mode = 10000; // Internet Explorer 10.  
                    break;
                case 11:
                    mode = 11000; // Internet Explorer 11  
                    break;
            }
            return mode;
        }






///在构造器中对相应属性进行设置(你这个放到构造器里面啊,别无脑抄,毕竟我不知道你页面啥名字,还有URL写你HTML文件放的位置)****************
 				//设置webBrowser
                wb1.AllowWebBrowserDrop = false;
                //防止 WebBrowser 控件在用户右击它时显示其快捷菜单。
                wb1.IsWebBrowserContextMenuEnabled = false;
                //以防止 WebBrowser 控件响应快捷键。
                wb1.WebBrowserShortcutsEnabled = true;
                //以防止 WebBrowser 控件显示脚本代码问题的错误信息。    
                wb1.ScriptErrorsSuppressed = true;
                //这个属性比较重要,可以通过这个属性,把WINFROM中的变量,传递到JS中,供内嵌的网页使用。
                wb1.ObjectForScripting = this;
                //URL写你HTML文件放的位置(这只是示例)
                wb1.Url = new Uri(Application.StartupPath + "\\" + this.Name + ".html");




///从后台调取数据传JSON数据

 private void Wb1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            status = "INIT";
            String time = date ;
            String time2="";
             //这个 myPicInit  是我自己写的方法,没贴出来,看看即可
            Object[] jsonObject = myPicInit(time,time2); 
            //js传值
            wb1.Document.InvokeScript("getData", jsonObject); //getdata 对应HTML文件中的function   数据格式为 JSON  (JSON根据需要自己拼就可以了)
            //this.ss1.Visible = true;
        }


接下来是HTML文件的一些配置(其实这部分可以看ECharts官网了)

<script type="text/javascript">		
		    var mon = '';
		    var yy1 = '';
		    var yy2 = '';
		    //这个就是.cs文件中提到的传JSON值   上文中jsonObject返回值为 (jsonStr1, jsonStr2, jsonStr3, date, year, year2 )  的形式
		    function getData(jsonStr1, jsonStr2, jsonStr3, date, year, year2 ) {
		        mon = date;
		        yy1 = year;
		        yy2 = year2;
		    var json1 = eval('(' + jsonStr1 + ')');//echarts的初始化方法
	
		    initPic1(json1);

		 
		}

function initPic1(json1) {
			// 基于准备好的dom,初始化echarts图表
			var dom = document.getElementById("m1");
			var myChart = echarts.init(dom); 			
			var option = {
			****************这个就看Echart的官网吧**********
			}
			}
</script >



<body style="height: 100%; margin: 0">
		<div id="m1" style="height: 50%;width: 50%;float: left"></div>
</body>
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在 C#使用 AJAX 和 ECharts,您需要在 C# 中编写一个 Web API,然后使用 AJAX 调用该 API。在 Web API 中,您需要使用 ECharts 的 JavaScript 库来生成图表,并将其返回为 JSON 数据。以下是一个简单的示例: 首先,您需要在 HTML 页面中引用 ECharts 的 JavaScript 库和 jQuery 库: ```html <script src="https://cdn.jsdelivr.net/npm/echarts@4.9.0/dist/echarts.min.js"></script> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> ``` 然后,您需要在 HTML 页面中定义一个容器来显示图表: ```html <div id="chart" style="width: 600px; height: 400px;"></div> ``` 接下来,您需要编写一个 C# Web API,该 API 可以使用 ECharts 生成图表并将其返回为 JSON 数据。以下是一个示例 API: ```csharp [HttpGet] public ActionResult GetChart() { // 创建 ECharts 实例 var chart = new ECharts(); // 设置图表配置 chart.SetOption(new { xAxis = new { type = "category", data = new[] { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" } }, yAxis = new { type = "value" }, series = new[] { new { data = new[] { 820, 932, 901, 934, 1290, 1330, 1320 }, type = "line" } } }); // 将图表转换为 JSON 数据并返回 return Json(chart.GetOption(), JsonRequestBehavior.AllowGet); } ``` 最后,在 HTML 页面中使用 AJAX 调用该 API 并使用 ECharts 渲染图表: ```javascript $.ajax({ url: '/api/GetChart', type: 'GET', dataType: 'json', success: function (data) { var chart = echarts.init(document.getElementById('chart')); chart.setOption(data); } }); ``` 这样就可以在 C#使用 AJAX 和 ECharts 生成图表了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值