上篇为大家讲解了股票分时的基本用法,这次接着上篇谈谈K线图,分时图和K线图都属于highstock里的功能图表,所以在使用上基本上相同,但也略有区别。
预期想要达成的效果图

1、首先设置datagrid属性的idField主键,这里假如为id,若idField为其他的,记住下面的代码里的 id也要做相应的修改。
2、建立一个全局的javascript数组var checkedItems = [],用来存放选中checkbox的值。
3、核心方法,addcheckItem()、removeAllItem(rows)、removeSingleItem(rowIndex, rowData)当选中或者取消checkbox时触发。
用来将checkbox的主键值保存在checkedItems数组,或者从数组中删除对应的id值,findCheckedItem(ID)这个函数用来查找数组中是否存在checkbox的值,存在则返回id值,不存在则返回-1.
4、什么时候调用这些方法呢?分别在datagrid的 onCheckAll: addcheckItem,onCheck: addcheckItem,onUncheckAll: removeAllItem,onUncheck: removeSingleItem 这四个事件中调用对应的方法。
5、翻页后如何给checkbox赋值呢?关键就在这里,datagrid重写了$.fn.datagrid.defaults.view的onAfterRender事件,因此在datagrid的view事件里绑定这个函数就OK了。onAfterRender事件是当easyui的元素渲染完毕后执行的事件,在这里会调用手写的 ischeckItem 函数来实现对checkbox的赋值!
下面为大家贴上实现的具体代码:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 $("#maingrid").datagrid({
idField: 'id',
view: fileview
});
var fileview = $.extend({}, $.fn.datagrid.defaults.view, { onAfterRender: function (target) { ischeckItem(); } });
var checkedItems = [];
function ischeckItem() {
for (var i = 0; i < checkedItems.length; i++) {
$('#maingrid').datagrid('selectRecord', checkedItems[i]); //根据id选中行
}
}
function findCheckedItem(ID) {
for (var i = 0; i < checkedItems.length; i++) {
if (checkedItems[i] == ID) return i;
}
return -1;
}
function addcheckItem() {
var row = $('#maingrid').datagrid('getChecked');
for (var i = 0; i < row.length; i++) {
if (findCheckedItem(row[i].id) == -1) {
checkedItems.push(row[i].id);
}
}
}
function removeAllItem(rows) {
for (var i = 0; i < rows.length; i++) {
var k = findCheckedItem(rows[i].id);
if (k != -1) {
checkedItems.splice(i, 1);
}
}
}
function removeSingleItem(rowIndex, rowData) {
var k = findCheckedItem(rowData.id);
if (k != -1) {
checkedItems.splice(k, 1);
}
}
下面是批量删除的代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28function destroyItems(items) {
var row = null;
if (items == "list") {
items = checkedItems.join(',');
row = $('#maingrid').datagrid('getSelections');
}
else {
row = items;
}
if (row != null) {
$.messager.confirm('Confirm', '您确定要删除此记录?', function (r) {
if (r) {
$.post(location.href, { id: items, action: "deletelist" }, function (result) {
if (result == "1") {
$('#maingrid').datagrid('reload');
} else {
$.messager.show({
title: 'Error',
msg: result
});
}
});
}
});
}
else { $.messager.alert('-警告-', '请选择至少一条记录才能进行删除', 'info'); }
}
今儿是2014的最后一天,我是不是要写点东西总结下自己呢?
对于一个北漂的人来说,唉,每年都TMD过的太快了,一线城市的生活就是这么快节奏,就是这么任性!还计划着今年要干什么干什么,却一晃就漂到年底了,猛的醒过来,“fuck,什么都没完成!于是有了下面一幅图的出现”

看完这个段子,大家是不是感觉趟枪了,o(∩_∩)o 哈哈,事实就是这个样子!
说点认真的吧,这年还是收获很多的。
工作上,掌握一些新的技术和一些编程理念,最重要的是自己由后台慢慢转变为一名前端攻城师,接触了angularjs前端框架,后端语言也由asp.net 转变成了 java,遇到问题更加冷静去思考去寻找解决问题的方案。总之呢,时间长了,会突然觉得所谓的大神,所谓的高手 不是他们的技术有多牛,不是他们的学历有多高,而是在工作中日积月累的解决问题的能力,慢慢培养出解决问题的思维方式和编程理念,当然我不否认在此基础之上需要夯实的基础知识!
在说说大部队吧,由开始的十几个人,由于各种原因,走了一批人,来了一批人,来不及感伤,来不及道别,只能快速融入新组建的团队中。然后嘻嘻嘻哈哈开始新产品的规划与开发。很幸运,大家相处很融洽和舒服,我们在朝着共同的目标奋斗着,希望有一天我们的产品能有越来越多的用户!
我呢,是一个不善言谈的人,在人际交际中,不喜欢阿谀奉承,不喜欢勾心斗角,不喜欢拍人马屁,喜欢较真,喜欢说大实话。说到这里,像我这种性格的人也许不适合在当今的社会中生存,更别说什么搞好层级关系,职位提升等等。但随着时间的流逝和自己意志力的流逝,自己总会被周遭所同化,你必须学会阿谀奉承、必须学会拍人马屁、必须学会掩饰自己,必须学会如何处理人际关系,我们必须扮演好在生活中、在工作中的角色,正如 《楚门的世界》 里所反应的,我们每个人都是生活中的演员!
highchart 插件之自定义事件
1 | (function (HC) { |
highchart 插件之legend 拖拽扩展
1 | (function (H) { |
1 | $(function () { |

highchart 插件之给column和bar 圆角
1 | (function (H) { |
1 | $(function () { |

有时候我们需要在ng列表元素渲染完毕后去执行一段js脚本,
angularjs刚好提供了ng-repeat的一个属性$last,然后为大家简单介绍2种方式
1 | <ul class="smart-timeline-list"> |
#####js脚本1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19angular.module('mainApp').directive('onFinishRenderFilters', function ($timeout) {
return {
restrict: 'A',
link: function(scope,element,attr) {
if (scope.$last === true) {
var finishFunc=scope.$parent[attr.onFinishRenderFilters];
if(finishFunc)
{
finishFunc();
}
}
}
};
})
.controller('test',["$scope",function($scope){
$scope.Complete=function(){
$('#div_scrollbar').tinyscrollbar();
}
}]);
1 | <ul class="smart-timeline-list"> |
1 | angular.module('mainApp').directive('onFinishRenderFilters', function ($timeout) { |
其实是看到群里有小伙伴有这个需求,我才制作了这个DEMO,因为之前用phantomjs实现过纯后台导出图片,所以顺便改了下以前的DEMO分享给大家。
phantomjs 纯后台导出 请参考:http://www.peng8.net/2014/07/21/render-charts-serverside/
phantomjs.exe 和rasterize.js ,rasterize.js 用来向 phantomjs 发起请求生成快照lhgdialog 弹窗插件来弹出展现我们要生成的图表