vb.net 实现如图vs2017 新功能 vb.net中间的彩色图表需要用哪个控件来完成?

VB。NET的一个新手问题_百度知道想实现类似于tabcontrol的功能,但是tabcontrol太难看。纯编写太麻烦。如图的设置菜单,点击左边的选项,右边的控件等内容跟着变化.
--------------------------------------
有好看的tabcontroldev 的 SuperTabcontrol.
--------------------------------------
支持一下!
--------------------------------------
可以用TreeView控件和Panel控件组合起来实现,先将每个选项页面保存在Panel中,点选Treeview控件不同节点时,显示不同的Panel。VB.NET数据库编程中DataGrid控件的使用技巧
查看: 744|
摘要: 介绍了VB.NET 数据库编程中DataGrid控件的使用技巧.这些技巧是:如何用同一个DataGrid显示不同的数据表;如何用DataGrid显示主表/明细表的内容;如何用DataGrid分页显示或编辑数据表的记录.这些技巧在开发数据库程序中很 ...
收稿日期:!""!#$"#$%
作者简介:蒋铁海($&’%—),男,湖南邵阳人,硕士,计算机副教授,主
要研究方向为数据库、多媒体()*、+*,。
!"#$%&数据库编程中’()(*+,-控件的使用技巧
蒋铁海$,刘朝晖!
($-广东外语外贸大学英文学院信息管理系,广东广州%$".!";
!-广州市交通委员会,广东广州%$"."%)
摘要:介绍了/0-123数据库编程中4565789:控件的使用技巧。这些技巧是:如何用同一个4565789:显示不同的数据
表;如何用4565789:显示主表/明细表的内容;如何用4565789:分页显示或编辑数据表的记录。这些技巧在开发数据库程
序中很有实用价值。
关键词:/0-123;数据库;4565789:;关联;分页显示
中图分类号:3;<&$-$< 文献标识码:0 文章编号:$""%#<=%$(!""<)"%#""&<#"*)1739?@A59$,B*CDA5E@AF9!
($-7F5GH:EGHCG9I?8J96KELME8?9HG,6F:9?J,7F5GHNAEF%$".!",(A9G5;
!-7F5GHNAEF0F8?5FEL(EOOFG9P569EG,7F5GHNAEF%$"."%,(A9G5)
?5+-7:/0-123;:565R5J?;4565789:;8?T569EG;:9JST5KRKS5H9GH
4565789:是/0-123中最重要的数据感知控件,它
不仅可以把数据库的记录以表格形式显示出来,而且可以
以表格形式编辑数据库的记录,所以,它在数据库编程中
应用非常广泛。那么,在/0-123数据库编程中4565@
789:控件有哪些使用技巧呢?这就是我们要探讨的内容。
@ 用同一个’()(*+,-分别显示不同的数据表
通过动态指定4565789:的数据源就可以把一个(或
多个)数据库中的多个数据表按需要显示在4565789:中。
图$、图!所显示的就是这种情况。在这个实例中,使用
图$ 显示三个数据表的第一种形式
的数据库是,6F:?G6-O:R,该数据库中的三个数据表分别
是:,6F:?G6,,PE?,(T5JJ。由于有三个数据表,所以要在窗
体上添加三个数据适配器,我们把它们分别命名为4R5$,
4R5!,4R5<,每个数据适配器可以连接到数据库中的一个
数据表,然后生成一个数据集(假如其名称是4J$),数据
集中有上述三个数据表。接着就要编写代码来实现程序
图! 显示三个数据表的第二种形式
在窗体装载事件中加入下列代码:
(EORE0EW$-*6?OJ-)::(“学生信息表”):(EORE0EW$-*6?OJ-
)::(“学生成绩表”)
(EORE0EW$-*6?OJ-)::(“课程信息表”)
4565789:$-4565,EF8P?X4J$’4J$是数据集的名称
这样,我们就用程序指定了4565789:的数据源[$]。
然后针对组合框(EORE0EW$的,?T?P6?:*G:?W(A5GH?:事
件编写下列代码就可以实现我们所期望的功能:
,?T?P6(5J?(EORE0EW$-3?W6
(5J?“学生信息表”
4J$-(T?58()
4565789:$-4565+?OR?8X“J6F:?G6”
4R5$-M9TT(4J$,“J6F:?G6”)
第$<卷第%期
+9P8EPEOSF6?84?I?TESO?G6
/ET-$< 1E-%
!"#$“学生成绩表”
%#&’!($")()
%"*"+),-&’%"*".$/0$)1“#23)$”
%0"4’5,(((%#&,“#23)$”)
!"#$“课程信息表”
%#&’!($")()
%"*"+),-&’%"*".$/0$)1“2("##”
%0"6’5,(((%#&,“2("##”)
.#893:(“必须选定一个数据表”)
把上面程序中的%"*"+),-&’%"*".$/0$)1“#*=-$;*”
和%0"&’5,(((%#&,“#*=-$;*”)分别修改为:%0"&’5,(((%#&,
“#*=-$;*”)和%"*"+),-&’<$*%"*"9,;-,;8(%#&,“#*=-$;*”),
其功能也是一样的。
实际上我们还可以直接利用%"*"+),-控件显示多个
数据表的功能来达到我们的要求。程序运行如图4所示。
此时,窗体装载事件的代码为:
%"*"+),-&’%"*"
+),-中单击任何一条记录,则在下面的第二个%"*"+),-
中显示其对应的详细情况。
图6 主表/明细表
图? 数据集架构
在这里,我们使用的二个数据表的名称分别是
-$;*、<23)$,它们放在一个名为@@’/-0的数据库中。由于
有二个数据表,所以使用了二个数据适配器%0"和%0"&。
当数据集生成之后,请在数据集上单击鼠标右键,选择“查
看架构”,此时就会在窗口中显示二个数据表的结构,如图
?所示,然后把鼠标指向<*=-$;*表的“学号”字段并按住
鼠标不放往<23)$数据表方向拖动,松开鼠标后电脑要你
确定二个数据表之间通过哪个字段建立关系,一般电脑会
自动找出二者之间关系,并且自动把二者之间的关系取名
为二个数据表的名称(在我们这里就是<*=-$;*<23)$),完
成后单击“确定”并保存好建立起来的关系。最后在窗体
装载事件中加入下列代码:
%0"’5,(((%#&,“#*=-$;*”)
%0"&’5,(((%#&,“#23)$”)
%"*"+),-&’<$*%"*"9,;-,;8(%#&,“#*=-$;*”)
%"*"+),-4’<$*%"*"9,;-,;8(%#&,“<*=-$;*’<*=-$;*<23)$”)
特别注意第二个%"*"+),-控件的%"*".$/0$)不是
数据表<23)$,而是<*=-$;*’<*=-$;*<23)$。
) 分页显示或编辑数据表的记录
用A9’B7C程序还可以控制%"*"+),-分页浏览或编
辑数据库记录。这是一个非常实用的功能。不过我们首
先要明白,D,;-3E#窗体中的%"*"+),-控件本身不具有分
页显示的功能,但我们可以控制它在一个页面中显示记录
的条数,从而实现分页显示或编辑功能。程序运行界面如
图F %"*"+),-分页显示和编辑
要实现这个功能最关键的是要掌握数据适配器的
5,((方法的用法,其基本用法是:
数据适配器’5,(((数据集,开始记录,要显示的记录条
数,数据表)。
“开始记录”是从G开始计算的。例如,如果要从第一
条记录开始,在%"*"+),-&中显示数据表<*32H的前6条
记录,则可以用下面的程序实现:
%0"’5,(((%#&,G,6,“#*32H”)
%"*"+),-&’<$*%"*"9,;-,;8(%#&,“#*32H”)
为实现图F所示的功能,我们先定义三个通用变量如
%,/2=))$;*I;-$:J#I;*$8$)’当前页首条记录的序列数,第
一页是从G开始的
%,/K"8$<,L$J#I;*$8$)’每页显示的记录数
%,/EJ#I;*$8$)’E表示总页数
!窗体装载事件对应的代码是:
2=))$;*I;-$:1G’第一条记录的第一条的序列数为G
·M?· 微机发展第&6卷
!"#$%&’$()’每页显示)条
*&+,-./,0$#$1’,为总记录数
*2"34&55(*.6,“.0789”)
,(*.63:"25$.(;)37?,0
/@(/,0((,)/)))((,)/):A$,’如果总记录数能够被)
=(/,0((,)/))
=(/,0((,)/))C6
E"2$563:$F0(“请输入页码,页码数大于6小于”G=
H?007,I3B,"25$D(4"5.$’H?007,I是上一页命令按钮
*.63>5$"1()
*2"34&55(*.6,8?11$,0/,D$F,!"#$%&’$,“.0789”)
*"0"J1&D63%$0*"0"H&,D&,#(*.6,“.0789”)
!“下一页”命令按钮对应的代码是:
H?007,I3B,"25$D(:1?$’H?007,I是上一页命令按钮
/@8?11$,0/,D$F"(=K6)#):A$,
8?11$,0/,D$F(8?11$,0/,D$FC)
H?007,L3B,"25$D(:1?$’H?007,L是最后一页命令按钮
8?11$,0/,D$F((=K6)#)
H?007,L3B,"25$D(4"5.$’H?007,L是最后一页命令按钮
H?007,63B,"25$D(4"5.$’H?007,6是下一页命令按钮
*.63>5$"1()
*2"34&55(*.6,8?11$,0/,D$F,!"#$%&’$,“.0789”)
!“上一页”命令按钮对应的代码是:
H?007,63B,"25$D(:1?$’H?007,6是下一页命令按钮
H?007,L3B,"25$D(:1?$’H?007,L是最后一页命令按钮
/@8?11$,0/,D$F(;:A$,
H?007,I3B,"25$D(4"5.$
8?11$,0/,D$F(8?11$,0/,D$FK)
*.63>5$"1()
*2"34&55(*.6,8?11$,0/,D$F,!"#$%&’$,“.0789”)
!“显示”命令按钮对应的代码是:
*&+F-./,0$#$1’F表示输入的页码
F( M"5(:$F0H7F63:$F0)
/@F$6-,DF" =:A$,
8?11$,0/,D$F((FK6)#)
*.63>5$"1()
*2"34&55(*.6,8?11$,0/,D$F,!"#$%&’$,“.0789”)
N$.."#$H7F3%A7=(“输入的页码必须在6和”G = G
“之间”)
第一页对应的8?11$,0/,D$F(;,最后一页对应的
8?11$,0/,D$F((=K6)#)。利用这二个特性就很容易
跳转到第一页和最后一页。
我们不仅可以分页显示数据库的记录,更可以在当前
页中直接编辑、修改记录。不过,被更改的内容是不会自
动保存的,你必须编写代码来保存记录的更改[I]。
!图O中的“确认更改”按钮对应的代码是:
*2"3P!D"0$(*.6,“.0789”)
N$.."#$H7F3%A7=(“数据更新已经完成”)
要正确执行这个程序,必须给数据库设置一个主键
(Q1&+"1RS$R),否则,程序运行时会出错,并且记录也不
会真正修改。这一点应特别注意。
!图O中“取消更改”按钮对应的代码则是:
N$3*.63A",#$.()
! 注意事项和结论
由于在配置数据适配器时是按数据库的绝对路径来
操作的,所以,当你把程序拷贝到别的文件夹中去运行时
往往要重新配置数据适配器,否则会出现找不到数据库的
错误,为了避免这种情况,我们在每个程序的窗体装载事
件中加入下列代码:N$3*283>7,,$80&7,%01&,# ( ”
Q17U&D$1(N&817.7@03V$03WEB*H3L3;;*"0"%7?18$(33%
.0?D$,03+D2”,这里*28是数据连接对象W5$*2>7,,$80&7,
的名称,.0?D$,03+D2则是要打开的数据库。这实际上就
是用程序指定数据连接,它要求把数据库跟项目文件放在
同一个目录中。
*"0"J1&D控件在MH3XB:数据库编程中有着非常广
泛的应用,充分利用上面介绍的使用技巧将使你的程序更
加完美和实用。当然,*"0"J1&D控件的还不止这些,还有
更多更好的应用等待着我们去挖掘。以上所有程序都在
MH3XB:CY&,D7=.I;;;下调试通过。
参考文献:
[6] 石磊ZM&.?"5H".&83XB:与数据库开发[N]3北京:人民
邮电出版社,I;;I3
[I] 廖疆星ZM&.?"5H".&83XB:实用数据库编程[N]3北京:冶
金工业出版社,I;;I3
会议征文通知
I;;)年全国单片机及嵌入式系统学术年会暨多国产品
展示会定于I;;)年6;月6日!6)日在天津大学召开。现
特征求大会论文。
一、征文内容:
6Z单片机与嵌入式系统的新概念、新成果、新技术、新
IZ单片机与嵌入式系统结构、软件及系统设计;
)Z片上系统(%7>)设计;
&#8943;&#8943;
二、联系方式:
第6)卷第O期
N&81787+!?0$1*$U$57!+$,0
M7536) X73O
Copyright &vb题求解答10. 将Image图像装入图片,利用水平和垂直滚动条改变图像控件的大小来实现对图片进行任意大小的缩放,如图2.4.9所示。提示:  ①将Image图像Stretch属性设置为True,使得图片随着图像控件大小的改变而变化;  ②将滚动条的最大值和最小值与图像控件放大和缩小的大小相关联。图片随便整一个就行了 
tttfgg000063
提示:将垂直滚动条的:最大值属性,Max设置为Image的最大高度值,Min设置为Image的最小高度值,在垂直滚动条的Change事件里编写代码如下:Private Sub VScroll1_Change()
Image1.Height = VScroll1.ValueEnd Sub水平原理相似!
为您推荐:
扫描下载二维码1829人阅读
.NET 图表专区(14)
项目中使用到的amchart对应的js文件及datepicker97控件到以下地址下载:效果图如下:&%@ Page Language=&C#& AutoEventWireup=&true& CodeFile=&wsdQuery.aspx.cs& Inherits=&WSD_wsdQuery& %&
&!DOCTYPE html PUBLIC &-//W3C//DTD XHTML 1.0 Transitional//EN& &http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&&
&html xmlns=&http://www.w3.org/1999/xhtml&&
&head id=&Head1& runat=&server&&
&title&温湿度历史曲线图&/title&
&link href=&../css/StyleSheet.css& rel=&stylesheet& type=&text/css& /&
&script src=&../js/amcharts/amcharts.js& type=&text/javascript&&&/script&
&script src=&../js/My97DatePicker/WdatePicker.js& type=&text/javascript&&&/script&
&script src=&../js/jquery-1.4.2.min.js& type=&text/javascript&&&/script&
&form id=&form1& runat=&server&&
&div class=&divtitle&&
&table width=&100%& border=&0& cellpadding=&0& cellspacing=&0&&
&td style=&text-align: letter-spacing: 10&&
&asp:Label ID=&lblTitle& runat=&server& Text=&1#温度曲线&&&/asp:Label&
&table border=&0& cellpadding=&0& cellspacing=&0& style=&margin-left: 0 vertical-align:&
class=&tabSearch&&
监控点名称
&asp:DropDownList ID=&ddlSiteNM& runat=&server& Style=&width: 110px&&
&/asp:DropDownList&
&input type=&text& id=&bTM& runat=&server& style=&width: 100px& onfocus=&WdatePicker({dateFmt:'yyyy-MM-dd',maxDate:'%y-%M-%d'})&
class=&Wdate& /&
&input type=&text& id=&eTM& runat=&server& style=&width: 100px& onfocus=&WdatePicker({dateFmt:'yyyy-MM-dd',maxDate:'%y-%M-%d'})&
class=&Wdate& /&
&asp:Button ID=&btnQuery& runat=&server& CssClass=&btnStyle& Text=&查询& OnClick=&btnQuery_Click& /&
&div style=&margin: 0px 2 border: 1px solid #0066FF&&
&div style=&width: 99%; text-align: padding: 5 color: B font-size: 17
font-weight:&&
&asp:Label ID=&lbl_data& runat=&server&&&/asp:Label&
&div style=&width: 99%; text-align: padding: 5 color: B font-size: 14&&
&table width=&100%& border=&0& cellpadding=&0& cellspacing=&0&&
&td style=&width: 33%&&
&td style=&width: 34%; text-align:&&
&asp:Label ID=&lbl_subtitle& runat=&server&&&/asp:Label&
&td style=&width: 33%; text-align: padding-right: 5&&
&asp:Label ID=&lbl_bz& runat=&server& Text=&单位(m)&&&/asp:Label&--%&
&div id=&container& runat=&server& style=&height: 500&&
&div id=&progressBar& class=&progressBar& runat=&server&&
数据加载中,请稍等...&/div&
&!--隐藏域赋值开始--&
&input type=&hidden& id=&ss& runat=&server& value=&[]& /&
&input type=&hidden& id=&ss_max& runat=&server& value=&[]& /&
&input type=&hidden& id=&ss_min& runat=&server& value=&[]& /&
&!--温度最大值--&
&input type=&hidden& id=&wd_max& runat=&server& value=&0& /&
&!--温度最小值--&
&input type=&hidden& id=&wd_min& runat=&server& value=&0& /&
&!--湿度最大值--&
&input type=&hidden& id=&sd_max& runat=&server& value=&0& /&
&!--湿度最小值--&
&input type=&hidden& id=&sd_min& runat=&server& value=&0& /&
&!--Y轴title--&
&input type=&hidden& id=&valueAxis_title& runat=&server& value=&0& /&
&input type=&hidden& id=&valueAxis_title1& runat=&server& value=&0& /&
&input type=&hidden& id=&valueAxis_title2& runat=&server& value=&0& /&
&input type=&hidden& id=&color& runat=&server& value=&0& /&
&input type=&hidden& id=&color_max& runat=&server& value=&0& /&
&input type=&hidden& id=&color_min& runat=&server& value=&0& /&
&!--显示单位--&
&input type=&hidden& id=&DW& runat=&server& value=&0& /&
&!--隐藏域赋值结束--&
&script type=&text/javascript&&
$(function () {
//从后台获取拼接的json串,进行eval解析
var ss = eval(&(& + $(&#ss&).val() + &)&);
AmCharts.ready(function () {
/*************************************温湿度***********************************/
chart = new AmCharts.AmSerialChart();
//chart图上的图片路径
chart.pathToImages = &../js/amcharts/images/&;
chart.zoomOutButton = {
backgroundColor: '#000000',
backgroundAlpha: 0.15
chart.dataProvider =
chart.categoryField = &date&;
chart.balloon.bulletSize = 5;
chart.height = &100%&;
chart.borderAlpha = 0;
chart.borderColor = &#0066FF&;
chart.addListener(&dataUpdated&, zoomChart);
// category
var categoryAxis = chart.categoryA
categoryAxis.dashLength = 1;
categoryAxis.gridAlpha = 0.5; //X轴参考线的透明度
categoryAxis.position = &bottom&; //X轴标签显示的位置
categoryAxis.axisColor = &#DADADA&;
categoryAxis.tickLength = 5;
categoryAxis.axisAlpha = 0.9; //X轴刻度线的透明度
categoryAxis.axisColor = &#000000&;
categoryAxis.showFirstLabel =
categoryAxis.gridPosition = &start&; //控制参考线显示的位置,start在点或者柱状图前显示,middle在点或者柱状图中间显示
categoryAxis.labelRotation = 35;
var valueAxis = new AmCharts.ValueAxis();
valueAxis.title = $(&#valueAxis_title&).val() + &(& + $(&#DW&).val() + &)&;
valueAxis.axisAlpha = 1;
valueAxis.dashLength = 0;
valueAxis.labelFunction = labelF //控制Y轴显示数据格式
valueAxis.maximum = $(&#wd_max&).val();
valueAxis.minimum = $(&#wd_min&).val();
chart.addValueAxis(valueAxis);
var graph = new AmCharts.AmGraph();
graph.title = $(&#valueAxis_title&).val(); //用于在图例上显示的名称
graph.type = &line&;
graph.lineColor = $(&#color&).val();
graph.valueField = &W&; //图表关联数据源中对应的字段值
graph.balloonText = $(&#valueAxis_title&).val() + &:[[W]] & + $(&#DW&).val(); //用于控制图表弹出窗口的信息。
graph.valueAxis = valueA //图表对应的Y轴
graph.bullet = &round&; //过程线上点的形状: &none&, &round&, &square&, &triangleUp&, &triangleDown&, &bubble&, &custom&
graph.bulletAlpha = 1; //过程线上点显示的透明度。
graph.bulletBorderThickness = 1; //过程线上点边线的宽度。
graph.bulletOffset = 0.5; //过程线上点显示的透明度。
graph.bulletSize = 5; //过程线上点大小
graph.lineThickness = 2;
$(&#ss_min&).val() == && ? graph.negativeBase = $(&#ss_max&).val() : graph.negativeBase = $(&#ss_min&).val(); //用户控制参考线的位置
graph.negativeLineColor = &#ff0000&; //低于参考线的颜色
graph.connect = //当数据为空时不显示
graph.hideBulletsCount = 500; // this makes the chart to hide bullets when there are more than 50 series in selection
chart.addGraph(graph);
if ($(&#ss_max&).val() != &&) {
var graph1 = new AmCharts.AmGraph();
graph1.title = $(&#valueAxis_title1&).val(); //用于在图例上显示的名称
graph1.type = &line&;
graph1.lineColor = $(&#color_max&).val();
graph1.valueField = &max&; //图表关联数据源中对应的字段值
graph1.balloonText = $(&#valueAxis_title1&).val() + &:[[max]] & + $(&#DW&).val(); //用于控制图表弹出窗口的信息。
graph1.valueAxis = valueA //图表对应的Y轴
graph1.bullet = &round&; //过程线上点的形状: &none&, &round&, &square&, &triangleUp&, &triangleDown&, &bubble&, &custom&
graph1.bulletAlpha = 1; //过程线上点显示的透明度。
graph1.bulletBorderThickness = 1; //过程线上点边线的宽度。
graph1.bulletOffset = 0.5; //过程线上点显示的透明度。
graph1.bulletSize = 1; //过程线上点大小
graph1.lineThickness = 2;
graph1.hidden = //控制过程性显示隐藏
graph1.connect = //当数据为空时不显示
graph1.hideBulletsCount = 500; // this makes the chart to hide bullets when there are more than 50 series in selection
chart.addGraph(graph1);
if ($(&#ss_min&).val() != &&) {
var graph2 = new AmCharts.AmGraph();
graph2.title = $(&#valueAxis_title2&).val(); //用于在图例上显示的名称
graph2.type = &line&;
graph2.lineColor = $(&#color_min&).val();
graph2.valueField = &min&; //图表关联数据源中对应的字段值
graph2.balloonText = $(&#valueAxis_title2&).val() + &:[[min]] & + $(&#DW&).val(); //用于控制图表弹出窗口的信息。
graph2.valueAxis = valueA //图表对应的Y轴
graph2.bullet = &round&; //过程线上点的形状: &none&, &round&, &square&, &triangleUp&, &triangleDown&, &bubble&, &custom&
graph2.bulletAlpha = 1; //过程线上点显示的透明度。
graph2.bulletBorderThickness = 1; //过程线上点边线的宽度。
graph2.bulletOffset = 0.5; //过程线上点显示的透明度。
graph2.bulletSize = 1; //过程线上点大小
graph2.lineThickness = 2;
graph2.hidden =
graph2.connect = //当数据为空时不显示
graph2.hideBulletsCount = 500; // this makes the chart to hide bullets when there are more than 50 series in selection
chart.addGraph(graph2);
chartCursor = new AmCharts.ChartCursor();
chartCursor.zoomable = //是否可以框选放大
chartCursor.categoryBalloonAlpha = 1; //用于控制鼠标移动时X轴显示文本的透明度
chartCursor.cursorAlpha = 1; //0不显示参考线,1显示参考线
chartCursor.valueBalloonsEnabled = //控制鼠标移动到图上是否显示弹出框
chart.addChartCursor(chartCursor);
var legend = new AmCharts.AmLegend();
legend.valueWidth = 0; //图例上显示数值的宽度。
legend.position = &bottom&;
legend.valueText = &&; //图例上显示数据的文本,此处为空为了覆盖图上产生的数值。
chart.addLegend(legend);
//滚动条设置
var chartScrollbar = new AmCharts.ChartScrollbar();
chart.addChartScrollbar(chartScrollbar);
// 输出显示Chart图
chart.write(&container&);
$(&#progressBar&).css(&display&, &none&);
$(&#ss&).val(&[]&)
//当chart图表第一次加载时,监听到dataUpdated事件后被调用
function zoomChart() {
//zoom可以使用的函数有:zoomToIndexes, zoomToDates, zoomToCategoryValues
chart.zoomToIndexes(0, ss.length - 1);
function labelFunction(a, b, c) {
var ss = parseFloat(b.replace(',', '')).toFixed(2);
using System.Collections.G
using System.L
using System.W
using System.Web.UI;
using System.Web.UI.WebC
using System.D
using System.T
using USTC;
public partial class WSD_wsdQuery : System.Web.UI.Page
OracleDM odm = new OracleDM();
protected void Page_Load(object sender, EventArgs e)
if (!IsPostBack)
//设置过程线的颜色
this.color.Value = Global.chart_
this.color_max.Value = Global.chart_color_
this.color_min.Value = Global.chart_color_
//初始为2个时间选择框赋值
this.bTM.Value = DateTime.Now.AddDays(-7).ToString(&yyyy-MM-dd&);
this.eTM.Value = DateTime.Now.ToString(&yyyy-MM-dd&);
BindDropDownList();
string ColumnName = this.Request.QueryString[&ColumnName&] ?? &WENDU&;
ViewState[&ColumnName&] = ColumnN
string deviceId = this.ddlSiteNM.SelectedItem.Value.Trim();
string deviceName = this.ddlSiteNM.SelectedItem.Text.Trim();
progressBar.Style[&display&] = &block&;
SetChartData(deviceId, deviceName, this.bTM.Value, this.eTM.Value, ColumnName);
/// &summary&
/// 根据条件生成Chart数据
/// &/summary&
public void SetChartData(string deviceId, string deviceName, string sDT, string eDT, string ColunmName)
switch (ColunmName.ToUpper())
case &WENDU&:
this.valueAxis_title.Value = &温度&;
this.DW.Value = &℃&;
case &SHIDU&:
this.valueAxis_title.Value = &湿度&;
this.DW.Value = &%&;
this.valueAxis_title.Value = &温度&;
this.DW.Value = &℃&;
StringBuilder sb = new StringBuilder();
string data = string.E
string strSQL = &select TM,& + ColunmName + & from T_WSD_DATA where TM&=to_date('& + sDT + &','yyyy/MM/dd hh24:mi:ss') and TM&to_date('& + DateTime.Parse(eDT).AddDays(1).ToString(&yyyy-MM-dd&) + &','yyyy/MM/dd hh24:mi:ss') and DEVICEID='& + deviceId + &' order by tm&;
DataSet ds = odm.getsql(strSQL);
DataSet ds2 = odm.getsql(&select wdmin,wdmax,sdmin,sdmax from t_wsd_attr where deviceid='& + deviceId + &'&);
string attr1 = &&;
string attr2 = &&;
if (ds2.Tables[0].Rows.Count & 0)
switch (ColunmName.ToUpper())
case &WENDU&:
attr1 = ds2.Tables[0].Rows[0][&wdmax&].ToString();
attr2 = ds2.Tables[0].Rows[0][&wdmin&].ToString();
this.valueAxis_title1.Value = &最大报警阀值&;
this.valueAxis_title2.Value = &最小报警阀值&;
case &SHIDU&:
attr1 = ds2.Tables[0].Rows[0][&sdmax&].ToString();
attr2 = ds2.Tables[0].Rows[0][&sdmin&].ToString();
this.valueAxis_title1.Value = &最大报警阀值&;
this.valueAxis_title2.Value = &最小报警阀值&;
attr1 = ds2.Tables[0].Rows[0][&wdmax&].ToString();
attr2 = ds2.Tables[0].Rows[0][&wdmin&].ToString();
this.valueAxis_title1.Value = &最大报警阀值&;
this.valueAxis_title2.Value = &最小报警阀值&;
if (ds.Tables[0].Rows.Count & 0)
foreach (DataRowView drv in ds.Tables[0].DefaultView)
sb.Append(&{& + &date:\&& + DateTime.Parse(drv[&TM&].ToString()).ToString(&yyyy/MM/dd HH:mm&) + &\&&
+ (drv[ColunmName] != null ? (&,W:& + double.Parse(drv[ColunmName].ToString()).ToString(&N2&).Replace(&,&, &&)) : &&)
+ (attr1 != && ? (&,max:& + attr1) : &&)
+ (attr2 != && ? (&,min:& + attr2) : &&)
/*********************************温度最值********************************/
//LINQ取获得数据中的最大值和最小值
var lists = (from row in ds.Tables[0].AsEnumerable()
orderby row.Field&decimal&(ColunmName) descending
select row);
DataRow drv_max = lists.FirstOrDefault();
DataRow drv_min = lists.LastOrDefault();
data = sb.ToString().TrimEnd(',');
data = &[& + data + &]&;
//string max = (double.Parse(drv_max[ColunmName].ToString()) & double.Parse(attr1) ? double.Parse(drv_max[ColunmName].ToString()).ToString() : double.Parse(attr1).ToString());
//为隐藏域赋值
this.ss.Value =
//this.wd_max.Value = ((double.Parse(max) * 1.001)).ToString();
progressBar.Style[&display&] = &none&;
this.ss_max.Value = attr1;
this.ss_min.Value = attr2;
//标题赋值
//this.lblTitle.Text = deviceName + &UPS曲线&;
this.lblTitle.Text = this.valueAxis_title.Value + &曲线&;
//为图表主副标题赋值
this.lbl_data.Text = &[& + deviceName + &]& + &-& + this.valueAxis_title.Value + &曲线图&;
this.lbl_subtitle.Text = &时间自& + DateTime.Parse(sDT).ToString(&yyyy年MM月dd日&) + &至& + DateTime.Parse(eDT).ToString(&yyyy年MM月dd日&);
/// &summary&
/// 查询按钮事件
/// &/summary&
/// &param name=&sender&&&/param&
/// &param name=&e&&&/param&
protected void btnQuery_Click(object sender, EventArgs e)
string bTM = this.bTM.Value.Trim(); //开始时间
string eTM = this.eTM.Value.Trim(); //结束时间
string deviceId = this.ddlSiteNM.SelectedItem.Value.Trim(); //设备编码
string deviceName = this.ddlSiteNM.SelectedItem.Text.Trim(); //设备名称
SetChartData(deviceId, deviceName, bTM, eTM, ViewState[&ColumnName&].ToString());
/// &summary&
/// 绑定下拉框数据
/// &/summary&
public void BindDropDownList()
string strSQL2 = &select DEVICEID,DEVICENAME from T_DEVICE_LIST where DEVICEID in (SELECT DISTINCT DEVICEID FROM T_WSD_Data)&;
DataSet ds2 = odm.getsql(strSQL2);
this.ddlSiteNM.DataSource = ds2;
this.ddlSiteNM.DataTextField = &DEVICENAME&;
this.ddlSiteNM.DataValueField = &DEVICEID&;
this.ddlSiteNM.DataBind();
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
欢迎大家加入群,交流分享GIS开发的点点滴滴,共同进步!群号1:群号2:宣传下本人翻译新书《JavaScript构建Web和ArcGIS Server应用实战》,有需要的朋友们支持一下!
阅读:2947
文章:11篇
阅读:12444
阅读:8107
文章:52篇
阅读:78233
文章:79篇
阅读:128089
文章:41篇
阅读:116930
访问:945342次
积分:15190
积分:15190
排名:第477名
原创:551篇
转载:57篇
评论:342条
(3)(2)(2)(9)(15)(14)(1)(5)(10)(5)(7)(5)(10)(5)(1)(6)(7)(4)(4)(8)(8)(7)(2)(4)(2)(5)(3)(6)(5)(2)(5)(3)(1)(4)(6)(1)(4)(7)(5)(7)(10)(9)(3)(9)(9)(8)(8)(17)(7)(16)(12)(16)(3)(9)(27)(15)(14)(17)(17)(9)(10)(7)(9)(5)(3)(1)(3)(8)(6)(23)(9)(24)(4)(7)(11)(5)(2)(4)(7)(3)(6)(1)(4)(1)(1)}

我要回帖

更多关于 vb.net 多功能编辑器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信