- 浏览: 529753 次
- 性别:
- 来自: 山东济南
文章分类
最新评论
-
dragon_8844:
非常不错,nice
java.util.concurrent 多线程框架 -
wusendong:
很好的文章!受益匪浅,谢谢!
java.util.concurrent 多线程框架 -
SINCE1978:
你也关注并发啊
java.util.concurrent 多线程框架 -
lku1314:
这个不错 刚刚找到这个组建 以前孤陋寡闻了 像lz学习!标 ...
quartz 在WEB中应用小结 -
lliiqiang:
人们对于目标需要的需求明确的去做,对于目标以外的因素是随机的执 ...
flex和后端的数据交互(一)--XML和HTTPService
3. 在表格中添加需要的键盘事件;目前版本的dhtmlxgrid只支持部分键盘事件,所以你可以根据自己的需要添加。
键盘事件大多是在dhtmlXGrid.js文件this.doKey方法中定义的,当然你也可以在页面中通过setOnKeyPressed()方法自己添加;
以下是我自己修改后的源码,注释掉的部分是自带源码:
4 文本类型单元格
它可以进行大篇幅文档的存储,但是dhtmlxgrid自带的功能和样式不怎么样,我们可以自己修改。
(1)修改单元格编辑状态下的样式,使得单元格在编辑状态下边框突出。
这是我修改dhtmlXGrid.css后的代码:
(2) 修改txt类型的其他属性,这些都是在dhtmlXGrid.js文件中定义的
来看看效果图:
说明:这只是针对1.4专业版的修改,有些功能在普通版中可能没有。
说一下具体需求吧!是不是要实现滚动条向下移动时从后台获取新的数据并显示或者从缓存中获取数据并显示?如果是这样的需求的话,在专业版中已经实现了!
如果你有专业版的话我可以给你提供一些帮助!
给一个项目组帮忙的时候,人家给的!
键盘事件大多是在dhtmlXGrid.js文件this.doKey方法中定义的,当然你也可以在页面中通过setOnKeyPressed()方法自己添加;
以下是我自己修改后的源码,注释掉的部分是自带源码:
this.doKey = function (ev) { if (!ev) { return true; } if ((ev.target || ev.srcElement).value !== window.undefined) { var zx = (ev.target || ev.srcElement); if ((!zx.parentNode) || (zx.parentNode.className.indexOf("editable") == -1)) { return true; } } if ((globalActiveDHTMLGridObject) && (this != globalActiveDHTMLGridObject)) { return globalActiveDHTMLGridObject.doKey(ev); } if (this.isActive == false) { return true; } if (this._htkebl) { return true; } if (!this.callEvent("onKeyPress", [ev.keyCode, ev.ctrlKey, ev.shiftKey])) { return false; } try { //daoger_start //define flag for judgment the editing state of selected cell var editeabled = null; if (this.editor) { editeabled = true; } //var type = this.cellType[this.cell._cellIndex]; //daoger_end //if (ev.keyCode == 13 && (ev.ctrlKey || ev.shiftKey)) { // var rowInd = this.rowsCol._dhx_find(this.row); // if (window.event.ctrlKey && rowInd != this.rowsCol.length - 1) { // if (this.row.rowIndex == this.obj._rowslength() - 1 && this.dynScroll && this.dynScroll != "false") { // this.doDynScroll("dn"); // } // this.selectCell(this.rowsCol[rowInd + 1], this.cell._cellIndex, true); // } else { // if (ev.shiftKey && rowInd != 0) { // if (this.row.rowIndex == 0 && this.dynScroll && this.dynScroll != "false") { // this.doDynScroll("up"); // } // this.selectCell(this.rowsCol[rowInd - 1], this.cell._cellIndex, true); // } // } // _isIE ? ev.returnValue = false : ev.preventDefault(); //} if (ev.keyCode == 13 && !ev.ctrlKey && !ev.shiftKey) { this.editStop(); //daoger_start //modify action of enter key //修改回车键事件,使得敲回车后选择状态或焦点下移 var rowInd = this.row.rowIndex; if (rowInd != this.rowsCol.length && rowInd != this.obj.rows.length - 1) { var nrow = this.obj._rows(rowInd); if (nrow._sRow || nrow._rLoad) { return false; } this.selectCell(nrow, this.cell._cellIndex, true); if (editeabled) { this.editCell(); } } else { if (this.pagingOn && (this.row != this.rowsCol[this.rowsCol.length - 1] || this.rowsBuffer[0].length > 0 || !this.recordsNoMore)) { this.changePage(this.currentPage + 1); this.selectCell(this.obj._rows(0), this.cell._cellIndex, true); if (editeabled) { this.editCell(); } } } //this.callEvent("onEnter", [this.row.idd, this.cell._cellIndex]); //daoger_end _isIE ? ev.returnValue = false : ev.preventDefault(); } if (ev.keyCode == 9) { this.editStop(); if (ev.shiftKey) { var z = this._getPrevCell(); } else { var z = this._getNextCell(); } if (!z) { return true; } this.selectCell(z.parentNode, z._cellIndex, (this.row != z.parentNode)); this.editCell(); _isIE ? ev.returnValue = false : ev.preventDefault(); } //daoger_start //add action of del key //选择一个单元格或多个单元格后,用del键清楚单元格内容 if (ev.keyCode == 46) { if (this._selectionArea) { this.clearSelection(); var startRow = this._selectionArea.LeftTopRow; var startCol = this._selectionArea.LeftTopCol; var endRow = this._selectionArea.RightBottomRow; var endCol = this._selectionArea.RightBottomCol; for (var i = startRow; i < endRow + 1; i++) { for (var j = startCol; j < endCol + 1; j++) { if (!(this.cellType[j] == "linenumber")) { this.cells(this.getRowId(i), j).setValue(); } } } startRow = null; startCol = null; endRow = null; endCol = null; } else { if (!(this.cellType[this.cell._cellIndex] == "linenumber") && !this.editor) { this.cells(this.getSelectedId(), this.cell._cellIndex).setValue(); } } return true; } //daoger_end //根据上一个单元格的编辑状态判断通过方向键移动后下一个单元格的状态是处于选择还是编辑状态 if (ev.keyCode == 40 || ev.keyCode == 38) { if (this.editor && this.editor.combo) { if (ev.keyCode == 40) { this.editor.shiftNext(); } if (ev.keyCode == 38) { this.editor.shiftPrev(); } return false; } else { var rowInd = this.row.rowIndex; if (ev.keyCode == 38 && rowInd != 1) { var nrow = this.obj._rows(rowInd - 2); if (nrow._sRow || nrow._rLoad) { return false; } this.selectCell(this.obj._rows(rowInd - 2), this.cell._cellIndex, true); //daoger_start //set state of this cell according to last if (editeabled) { this.editCell(); } //daoger_end } else { if (this.pagingOn && ev.keyCode == 38 && rowInd == 1 && this.currentPage != 1) { this.changePage(this.currentPage - 1); this.selectCell(this.obj.rows[this.obj.rows.length - 1], this.cell._cellIndex, true); //daoger_start //set state of this cell according to last if (editeabled) { this.editCell(); } //daoger_end } else { if (ev.keyCode == 40 && rowInd != this.rowsCol.length && rowInd != this.obj.rows.length - 1) { var nrow = this.obj._rows(rowInd); if (nrow._sRow || nrow._rLoad) { return false; } this.selectCell(nrow, this.cell._cellIndex, true); //daoger_start //set state of this cell according to last if (editeabled) { this.editCell(); } //daoger_end } else { if (this.pagingOn && ev.keyCode == 40 && (this.row != this.rowsCol[this.rowsCol.length - 1] || this.rowsBuffer[0].length > 0 || !this.recordsNoMore)) { this.changePage(this.currentPage + 1); this.selectCell(this.obj._rows(0), this.cell._cellIndex, true); //daoger_start //set state of this cell according to last if (editeabled) { this.editCell(); } //daoger_end } } } } } _isIE ? ev.returnValue = false : ev.preventDefault(); } //daoger_start //add action of left and right key //添加左右方向键事件 if (ev.keyCode == 37 || ev.keyCode == 39) { this.editStop(); if (ev.keyCode == 37) { var z = this._getPrevCell(); } else { if (ev.keyCode == 39) { var z = this._getNextCell(); } } if (!z) { return true; } this.selectCell(z.parentNode, z._cellIndex, (this.row != z.parentNode)); if (editeabled) { this.editCell(); } _isIE ? ev.returnValue = false : ev.preventDefault(); } //daoger_end if ((ev.keyCode == 113) && (this._f2kE)) { this.editCell(); return false; } if (ev.keyCode == 32) { var c = this.cell; var ed = this.cells4(c); if (ed.changeState() != false) { _isIE ? ev.returnValue = false : ev.preventDefault(); } } if (ev.keyCode == 27 && this.oe != false) { this.editStop(); _isIE ? ev.returnValue = false : ev.preventDefault(); } if (ev.keyCode == 33 || ev.keyCode == 34) { if (this.pagingOn) { if (ev.keyCode == 33) { this.changePage(this.currentPage - 1); } else { this.changePage(this.currentPage + 1); } } var new_ind = Math.floor((this.getRowIndex(this.row.idd) || 0) + (ev.keyCode != 33 ? 1 : -1) * this.objBox.offsetHeight / (this._srdh || 20)); if (new_ind < 0) { new_ind = 0; } if (this._dload && (!this.rowsCol[new_ind])) { this._askRealRows(new_ind, function () { try { self.selectCell(new_ind, this.cell._cellIndex, true); } catch (e) { } }); } else { if (new_ind >= this.rowsCol.length) { new_ind = this.rowsCol.length - 1; } this.selectCell(new_ind, this.cell._cellIndex, true); } if (_isIE) { ev.returnValue = false; } else { ev.preventDefault(); } } if (!this.editor) { if (ev.keyCode == 37 && this.cellType._dhx_find("tree") != -1) { this.collapseKids(this.row); _isIE ? ev.returnValue = false : ev.preventDefault(); } if (ev.keyCode == 39 && this.cellType._dhx_find("tree") != -1) { this.expandKids(this.row); _isIE ? ev.returnValue = false : ev.preventDefault(); } } return true; } catch (er) { return true; } };
4 文本类型单元格
它可以进行大篇幅文档的存储,但是dhtmlxgrid自带的功能和样式不怎么样,我们可以自己修改。
(1)修改单元格编辑状态下的样式,使得单元格在编辑状态下边框突出。
这是我修改dhtmlXGrid.css后的代码:
div.gridbox table.obj tr.rowselected td.cellselected,div.gridbox table.obj td.cellselected{ background-color: #EDF5FE; border: 2px solid #009ACD; }
(2) 修改txt类型的其他属性,这些都是在dhtmlXGrid.js文件中定义的
function eXcell_txt(cell) { if (cell) { this.cell = cell; this.grid = this.cell.parentNode.grid; } this.edit = function () { this.val = this.getValue(); this.obj = document.createElement("TEXTAREA"); this.obj.className = "dhx_textarea"; this.obj.onclick = function (e) { (e || event).cancelBubble = true; }; var arPos = this.grid.getPosition(this.cell); if (!this.cell._clearCell) { this.obj.value = this.val; } this.obj.style.display = ""; //daoger_start //modify textarea align this.obj.style.textAlign = "left";//文字对齐方式 //this.obj.style.textAlign = this.cell.align; //daoger_end if (_isFF) { var z_ff = document.createElement("DIV"); z_ff.appendChild(this.obj); z_ff.style.overflow = "auto"; z_ff.className = "dhx_textarea"; this.obj.style.margin = "0px 0px 0px 0px"; this.obj.style.border = "0px"; this.obj = z_ff; } document.body.appendChild(this.obj); this.obj.onkeydown = function (e) { var ev = (e || event); if (ev.keyCode == 9) { globalActiveDHTMLGridObject.entBox.focus(); globalActiveDHTMLGridObject.doKey({keyCode:ev.keyCode, shiftKey:ev.shiftKey, srcElement:"0"}); return false; } }; this.obj.style.left = arPos[0] + "px"; //daoger_start //让单元格编辑状态下自适应文本长度 //this.obj.style.top = arPos[1] + this.cell.offsetHeight + "px"; this.obj.style.top = (arPos[1] + 1) + "px"; //adjust width of textarea under text cell //if (this.cell.scrollWidth < 200) { // var pw = 200; //} else { // var pw = this.cell.scrollWidth; //} if (this.cell.scrollWidth < 100) { var pw = 100; } else { if (this.cell.scrollWidth > 200) { var pw = 200; } else { var pw = this.cell.scrollWidth; } } this.obj.style.width = (pw + (_isFF ? 6 : 4)) + "px"; //this.obj.style.width = (pw + (_isFF ? 18 : 16)) + "px"; //在键盘输入状态下,文本编辑区域随着文本的增加高度也增加 this.obj.style.height = "0px"; //this.obj.onPropertyChange = new Function("this.setTxtHeight(this.obj);"); //daoger_end if (_isFF) { this.obj.firstChild.style.width = parseInt(this.obj.style.width) + "px"; this.obj.firstChild.style.height = this.obj.offsetHeight - 3 + "px"; } this.obj.focus(); if (_isFF) { this.obj.firstChild.focus(); } else { this.obj.focus(); } };
来看看效果图:
说明:这只是针对1.4专业版的修改,有些功能在普通版中可能没有。
评论
11 楼
afcn0
2007-11-28
使用utf8或者给xml增加gb2312的charset header
10 楼
javaman1982
2007-11-28
中文显示都是乱码,有什么好的解决方法吗?
我数据都是从数据库里读出来的~
然后封装到xml里面的 可前台显示出来都是乱码~
我数据都是从数据库里读出来的~
然后封装到xml里面的 可前台显示出来都是乱码~
9 楼
daoger
2007-11-05
哦!这个没试过!
8 楼
vtsuper
2007-11-05
我用了"mygrid.enableBuffering();"
可以一邊scroll,一邊下載資料....
但我希望在scroll的同時可以顯示一個"資料下載中"的DIV...
因此我用了mygrid.setOnScrollHandler('showDiv');
但onscroll沒有onscrollstart,onscrollend之分..因此做不了那種效果
可以一邊scroll,一邊下載資料....
但我希望在scroll的同時可以顯示一個"資料下載中"的DIV...
因此我用了mygrid.setOnScrollHandler('showDiv');
但onscroll沒有onscrollstart,onscrollend之分..因此做不了那種效果
7 楼
daoger
2007-11-03
vtsuper 写道
沒有哦..我只有free version
還有另一個問題setOnScrollHandler
請問有沒有幫法加一個onscrollstart,onscrollend呢??
假如我希望scroll時會有一個div顯示loading字眼..但只有一個setonscrollhandler是不足夠的
還有另一個問題setOnScrollHandler
請問有沒有幫法加一個onscrollstart,onscrollend呢??
假如我希望scroll時會有一個div顯示loading字眼..但只有一個setonscrollhandler是不足夠的
说一下具体需求吧!是不是要实现滚动条向下移动时从后台获取新的数据并显示或者从缓存中获取数据并显示?如果是这样的需求的话,在专业版中已经实现了!
6 楼
vtsuper
2007-11-03
沒有哦..我只有free version
還有另一個問題setOnScrollHandler
請問有沒有幫法加一個onscrollstart,onscrollend呢??
假如我希望scroll時會有一個div顯示loading字眼..但只有一個setonscrollhandler是不足夠的
還有另一個問題setOnScrollHandler
請問有沒有幫法加一個onscrollstart,onscrollend呢??
假如我希望scroll時會有一個div顯示loading字眼..但只有一個setonscrollhandler是不足夠的
5 楼
daoger
2007-11-02
vtsuper 写道
請問可以分享一下代碼???
我正在希望整現merge cell的功能
我正在希望整現merge cell的功能
如果你有专业版的话我可以给你提供一些帮助!
4 楼
vtsuper
2007-11-02
請問可以分享一下代碼???
我正在希望整現merge cell的功能
我正在希望整現merge cell的功能
3 楼
vtsuper
2007-11-02
嗚...請問可以分享嗎?
2 楼
daoger
2007-10-30
fins 写道
专业版的源代码能弄到吗??
给一个项目组帮忙的时候,人家给的!
1 楼
fins
2007-10-30
专业版的源代码能弄到吗??
发表评论
-
ubuntu14.04下编译安装Tora
2015-08-11 16:19 1199需预先安装oracle客户端;以下类库,有的可能需要提前安 ... -
ubuntu14.04下oracle客户端最小化安装
2015-08-11 16:04 1048在Oracle官网下载Oracle Instant Clien ... -
ubuntu14.04下编译安装QT
2015-08-11 16:03 14941. 首先配置一些编译Qt ... -
55种开源可视化数据分析工具
2015-07-22 14:50 0http://mp.weixin.qq.com/s?__bi ... -
响应式设计理念
2013-09-29 10:00 0概念 响应式Web设计(Responsive Web desi ... -
Liferay 使用随笔
2010-04-19 14:18 01.如何根据权限去除每一个portlet中右上角的选项。 关于 ... -
Liferay中ajax应用用户session超时
2010-03-26 09:31 3906基于Liferay Portal开发ajax应用时,如果长时间 ... -
Liferay portlet实例化配置
2009-11-10 09:06 4364在默认的情况下,一个p ... -
带checkbox的dhtmlxtree菜单树异步加载时的问题解决
2009-10-24 11:27 5955最近一直很忙,自己负责几个模块的设计开发,还有和其他服务接口的 ... -
JS代码示例
2009-10-21 14:23 22781.数组操作时的push var a = [],b = [ ... -
dhtmlxtree异步加载时的一个bug修正
2009-09-15 10:00 3803前面已经对dhtmlx的东西有所介绍,使用中也发现了不少bug ... -
WEB Page to PDF
2009-06-17 11:10 2521现在有很多网页页面转换成PDF文档的支持项目,我使用的是pd4 ... -
Liferay中使用dhtmlxlayout在IE下的问题
2009-06-12 13:43 2088Liferay 中使用dhemtlx系列UI的时候,dhtml ... -
Liferay相关配置
2009-06-10 13:35 1250修改liferay中portlet的加载目录 前面 ... -
Spring JDBC对Oracle10g数据库操作时RowSet的问题
2009-05-19 08:56 3435使用Spring JDBC对Oracle10g进行数据库分页的 ... -
Dynamic Tables In JavaScript for IE and Firefox
2009-05-06 14:03 1704http://www.sweetvision.com/2007 ... -
liferay中对struts桥接处理后的response
2009-04-18 14:29 1828对于在liferay开发平台中 ... -
liferay开发小记---Struts,Spring,Hibernate架构
2009-04-07 11:11 6249liferay有自己的struts和spring扩展,有兴趣的 ... -
liferay开发小记---portlet文件构造
2009-04-03 17:09 3277书接上回,说说portlet的开发,每一个portlet就是对 ... -
liferay开发小记---开发环境的搭建
2009-04-02 13:42 3797用惯了MyEclipse,我的环境也是在它上面搭建的,试用过M ...
相关推荐
ASME09增补II-B中文版主要涵盖了ASME锅炉及压力容器规范的非铁基材料部分,这是针对2009年发布的增补内容。这个规范是国际性的,旨在规定动力锅炉和压力容器制造中使用的非铁基材料的标准和要求。ASME锅炉及压力容器...
《神马集团有限责任公司采购管理月增补计划详解》 神马集团有限责任公司在其采购管理章节中,详细阐述了月度采购计划增补的流程与规定,旨在确保公司的生产稳定和采购效率。这一流程涉及多个部门,从需求提出到计划...
ASME(美国机械工程师学会)锅炉及压力容器规范是一部国际公认的重要标准,它涉及到工业生产中的安全和质量控制。此规范的II卷D篇主要关注材料的性能,特别是在公制单位系统下的性能指标。2009年的增补版是对2007年...
在本压缩包文件中,我们关注的是一个与智慧城市建设和网络通信工程密切相关的项目——"粤西10波分复用系统扩容工程(第二批增补)"。这个项目涉及到使用Visio进行信息化设计,以优化和扩展现有的通信网络,特别是光...
医药生物行业:医保局发布意见稿限制地方医保增补-0729-国联证券-18页.pdf
修改扩展界面支持库一,为“树形框”增加多态检查框功能,相应地添加了多个与检查框相关的属性、方法和事件。 17. 修改高级表格支持库,允许“复制选定文本()”“剪切选定文本()”在“允许选择块”属性为假时复制...
Houdini 进阶案例课镜头增补版是一门专注于 Houdini 高级案例制作的课程。本课程深入探讨了 Houdini 在镜头制作方面的应用,通过实际案例和项目实战,帮助学员掌握 Houdini 的高级技巧和工作流程,提升学员的 ...
《Solaris 8 安装增补-12》是Sun Microsystems公司发布的一款针对Solaris 8操作系统的重要更新。这个增补包旨在提高系统的稳定性和性能,修复已知的漏洞,并引入新的功能。 Solaris 8是Sun Microsystems开发的一个...
《Solaris 8 安装增补-58》是Sun Microsystems公司发布的一份重要的技术文档,主要针对Solaris 8操作系统的一个特定更新或补丁包。这份文档的发布日期为2001年4月,详细介绍了如何安装和管理这个增补程序,以确保...
功能:通过修改注册表来进行键盘键的重新定义。本键盘映射工具仅修改注册表,不驻留内存。 通过本工具,你可以将键盘上一些不常用的键定义为其它功能或者将其禁用,如将 ScrollLock 定义为静音、Wake Up 定义为减小...
《Solaris 8 安装增补-20》是Sun Microsystems公司发布的一款针对Solaris 8操作系统的重要更新。这个增补包旨在提高系统的稳定性和兼容性,包含了自Solaris 8原始版本发布以来的多项修复和改进。该文档详细介绍了...
ROST-CM6反剽窃免费检测软件是一款功能强大且功能齐全的内容挖掘系统,旨在帮助用户检测和分析文本内容的原始性和真实性。该软件具备多种分析工具和功能,能够满足不同用户的需求。 在功能性分析方面,ROST-CM6能够...
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
《Serv-U FTP的建立和维护手册(增补稿) BY Hermit》是一份详细阐述如何设置和管理Serv-U FTP服务器的指南。这份手册由Hermit编撰,旨在帮助IT管理员和用户更好地理解和操作这一强大的FTP服务软件。以下将对这份...
- 卷积神经网络(CNN):一种深度学习模型,能够高效地处理空间信息,常用于图像和文本的特征提取。 - 长短期记忆网络(LSTM):一种特殊的循环神经网络(RNN),设计用来避免长期依赖问题,适合处理和预测序列...
《Serv-U FTP的建立和维护手册(增补稿)》是一部详细阐述如何搭建与管理Serv-U FTP服务器的专业指南。这份手册对于那些希望在自己的网络环境中实施安全、高效FTP服务的IT管理员来说,是一份极其宝贵的参考资料。...