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

推荐订阅源

S
Schneier on Security
F
Fortinet All Blogs
B
Blog
GbyAI
GbyAI
P
Proofpoint News Feed
量子位
The Register - Security
The Register - Security
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏
云风的 BLOG
云风的 BLOG
V
Visual Studio Blog
B
Blog RSS Feed
WordPress大学
WordPress大学
Recorded Future
Recorded Future
Recent Announcements
Recent Announcements
V
Vulnerabilities – Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Secure Thoughts
雷峰网
雷峰网
Stack Overflow Blog
Stack Overflow Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Webroot Blog
Webroot Blog
AWS News Blog
AWS News Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The GitHub Blog
The GitHub Blog
爱范儿
爱范儿
O
OpenAI News
月光博客
月光博客
H
Hacker News: Front Page
S
Security Affairs
W
WeLiveSecurity
The Hacker News
The Hacker News
aimingoo的专栏
aimingoo的专栏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Help Net Security
Help Net Security
MongoDB | Blog
MongoDB | Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
Docker
T
The Blog of Author Tim Ferriss
Spread Privacy
Spread Privacy
Blog — PlanetScale
Blog — PlanetScale
J
Java Code Geeks
S
Securelist
Microsoft Azure Blog
Microsoft Azure Blog
TaoSecurity Blog
TaoSecurity Blog
T
Threat Research - Cisco Blogs
M
MIT News - Artificial intelligence
A
About on SuperTechFans

博客园 - 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内生成。
哈哈哈... 茅塞顿开,思路一下子开窍。