惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Azure Blog
Microsoft Azure Blog
Cloudbric
Cloudbric
I
InfoQ
V
V2EX
博客园_首页
The Register - Security
The Register - Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
S
Secure Thoughts
Vercel News
Vercel News
Forbes - Security
Forbes - Security
云风的 BLOG
云风的 BLOG
PCI Perspectives
PCI Perspectives
L
LINUX DO - 最新话题
D
DataBreaches.Net
H
Hacker News: Front Page
Application and Cybersecurity Blog
Application and Cybersecurity Blog
B
Blog RSS Feed
A
About on SuperTechFans
N
News and Events Feed by Topic
Apple Machine Learning Research
Apple Machine Learning Research
Help Net Security
Help Net Security
Attack and Defense Labs
Attack and Defense Labs
N
Netflix TechBlog - Medium
Spread Privacy
Spread Privacy
F
Full Disclosure
Recorded Future
Recorded Future
AWS News Blog
AWS News Blog
博客园 - 【当耐特】
The Cloudflare Blog
T
Threatpost
T
Tor Project blog
Google DeepMind News
Google DeepMind News
C
CXSECURITY Database RSS Feed - CXSecurity.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
M
MIT News - Artificial intelligence
A
Arctic Wolf
C
Check Point Blog
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
Hacker News - Newest:
Hacker News - Newest: "LLM"
WordPress大学
WordPress大学
Cyberwarzone
Cyberwarzone
小众软件
小众软件
C
Cyber Attacks, Cyber Crime and Cyber Security
P
Proofpoint News Feed
Security Latest
Security Latest
The Last Watchdog
The Last Watchdog

博客园 - Insus.NET

User Profile Service 服务未能登录 Visual Studio2026创建Vue项目 安装与配置node.js HTTP Error 403.14 - Forbidden VisualStudio2026回滚上一版本 消息认证码(加强) 网站无法使用插值字符串语法 HMAC(Hash-based Message Authentication Code)认证示例 浏览器自动发送域凭据 企业内小网站兼用Windows验证登录 访问用户控件的函数 onblur事件改为监听处理 将警报消息改为吐司消息 内容有无变化OnBlur即时更新引起的问题与解决 混合式提高用户编辑与操作效率 光标离开文框后即刻更新 WebForm实现Web API JavaScript对GridView删除行后并重新给其数据绑定 把CS值传给JS使用 v2 确认信息confirm由C#后端移至javascript前端 无法发布网站Web Site JavaScript判断字符是否为decimal 点击单元格弹出窗口处理数据返回父页 GridView数据控件中实现单选功能 文本框输入完后直接按回车提交数据 GridView对行进行全选或单选 TextBox文本框允许用户输入正或负小数 用户单击文本并复制至剪帖板 Vue3格式化日期时间与插值 SQL Server中验证大小字母和数字 MS SQL Server 数据加密与解密实例 相册由原来Lightbox升级至Vue2瀑布流 从Visual Studio 2022升级至Visual Studio 2026 钉钉(DingTalk)免登录 Upgrade Outlook Connector 程序中真实应用SignalR Web API路径与IIS站点应用程序名或虚拟目录 在您可以登录前,此副本的 Windows 必须被 Microsoft 激活。您想现在激活它吗 电脑系统由Win10降级Win7折腾还是折腾 System.ComponentModel.Win32Exception: Access is denied
报表应用图表charts显示数据
Insus.NET · 2025-11-13 · via 博客园 - Insus.NET

在内网和手机,一直以文字和数据呈现。
上星期,浏览网页时,发现图表charts显示数据和报表,觉得不错的方式。
图表,如 https://echarts.apache.org/zh/index.html

Apache ECharts

一个基于 JavaScript 的开源可视化图表库

 

2025-11-13_13-21-35

 花上好几天时间,分别使用javascript和vue实现,效果如下,
(echarts.min.4.3.0.js)
2025-11-13_10-49-45


(echarts.min.5.1.2.js)
2025-11-13_10-50-23

相同的数据,数据是来自网上,算是虚拟数据啦,没有经特别设置,只是使用echarts.min.js版本不同机而已。

<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>

或者

<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.1.2/echarts.min.js"></script>

亦可以下载并拉放至项目Scripts目录中,然后在网页上引用即可。

<script src="~/Scripts/echarts.min.4.3.0.js"></script>

或者,

<script src="~/Scripts/echarts.min.5.1.2.js"></script>

以上,只是行动中的第一步。

接下来,准备一些数据,

[
  {
    "category": "电子产品",
    "sales": 12500,
    "count": 320,
    "profit": 4500
  },
  {
    "category": "服装",
    "sales": 8900,
    "count": 540,
    "profit": 2200
  },
  {
    "category": "食品",
    "sales": 7600,
    "count": 890,
    "profit": 1800
  },
  {
    "category": "家居",
    "sales": 10200,
    "count": 430,
    "profit": 3100
  },
  {
    "category": "图书",
    "sales": 5400,
    "count": 670,
    "profit": 1200
  },
  {
    "category": "运动",
    "sales": 6800,
    "count": 380,
    "profit": 1900
  }
]

View Code


做测试,可以把数据存储为json文件,放在App_Data目录。

2025-11-13_11-15-00

当然你想通过数据库的话,如ms sql Server数据库,你得创建表,把数据存储起来,创建存储过程,让中间层访问得到数据。

CREATE TABLE [dbo].[SalesData](
	[Category] [nvarchar](40) NOT NULL PRIMARY KEY,
	[Sales] [int] NULL,
	[Count] [int] NULL,
	[Profit] [int] NULL
)
GO
INSERT INTO [dbo].[SalesData]
           ([Category],[Sales],[Count],[Profit])
     VALUES
           (N'图书',5400,670,1200),
		   (N'家居',10200,430,3100),
		   (N'服装',8900,540,2200),
		   (N'电子产品',12500,320 ,4500),
		   (N'运动',6800,380,1900),
		   (N'食品',7600,890,1800)
GO
 CREATE PROCEDURE [dbo].[usp_SalesData_Select_All]
 AS
 BEGIN
	SELECT 
		[Category],
		[Sales],
		[Count],
		[Profit]
	FROM  [dbo].[SalesData]
 END
GO

创建model,不管是从json文档读取数据,还是从数据读取数据,需要转换为对象。
2025-11-13_11-59-01

创建Entity,
2025-11-13_13-08-27


创建API,为下面javascript或是vue get到数据,实现异步操作。
2025-11-13_13-51-10

上面的准备,差不多了。
对了,还差一些Scripts,如axios.js和vue.js。在项目中,打开Manage NuGet Package...
2025-11-13_15-58-10

 

下面Insus.NET先来使用javascript实现图表,

Html,

<div style="height: 100%;">
    <div id="main" style="width: 600px;height:400px;"></div>
</div>


Javascript,首先引用,

<script src="~/Scripts/axios.min.js"></script>
<script src="~/Scripts/echarts.min.5.1.2.js"></script


2025-11-13_16-12-11

2025-11-13_16-15-18

下面的代码演示,是以vue来实现,

<script src="~/Scripts/vue.min.js"></script>
<script src="~/Scripts/axios.min.js"></script>
<script src="~/Scripts/echarts.min.5.1.2.js"></script>

在html中,需要添加一个vue的加载节点,

<div style="height: 100%;">
    <div id="app">
        <div id="main" style="width: 600px;height:400px;"></div>
    </div>
</div>

vue代码示例,
2025-11-13_16-32-31

下面的generate_echarts() function与js的方法大同小异。
2025-11-13_16-40-13

分享一下,一开始学习图表呈现,是先从vue开始的。
遇上瓶颈啦,在javascript代码死活访问不了Vue内axios异步数据。

2025-11-12_16-20-37

查阅N多相关技术与资料,
想取得vue.js的Data()内的变量属性property,有人说要使用vue的实例名,

var vue_echarts = new Vue({
    el: '#app',
    //...
})

vue_echarts.$data.echarts_data_source 
这是得不到数据的。

也有网友说,这个是引用型赋值 ,不能直接使用=
要使用copy。

this.echarts_data_source = data.Data.slice();
this.echarts_data_source = JSON.parse(JSON.stringify(data.Data));

或者,

this.echarts_data_source = data.Data.map(x => x);

均行不通。

还尝试过,使用for来把所有对象一一重新push

for (var k = 0; k < data.Data.length; k++) {
    var o = data.Data[i];
    this.echarts_data_source.push(o)
}

还想过,

data: {
    echarts_data_source =[],
    xaxis_data =[],
    series_data = []
},

添加最终2个数据,xaxios_data和series_data。

for (var k = 0; k < data.Data.length; k++) {
    var o = data.Data[i];
    this.xaxis_data.push(o.Category);
    this.series_data.push(o.Sales)
}

办法尝试过许多,
无法突破,只好请教好朋友...
不要使用混合模式,可以以下2种解决方案,
完使用javascript,抛弃vue。
另外一个方案,
直接使用使用uve。图表创建,生成以及option数据设置完全在vue内生成。
哈哈哈... 茅塞顿开,思路一下子开窍。