<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>The source code</title>
<link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="../resources/prettify/prettify.js"></script>
</head>
<body onload="prettyPrint();">
<pre class="prettyprint lang-js">/*!
* Ext JS Library 3.3.1
* Copyright(c) 2006-2010 Sencha Inc.
* licensing@sencha.com
* http://www.sencha.com/license
*/
Ext.ns('Ext.ux.grid');
/**
* @class Ext.ux.grid.BufferView
* @extends Ext.grid.GridView
* A custom GridView which renders rows on an as-needed basis.
*/
Ext.ux.grid.BufferView = Ext.extend(Ext.grid.GridView, {
<div id="cfg-Ext.ux.grid.BufferView-rowHeight"></div>/**
* @cfg {Number} rowHeight
* The height of a row in the grid.
*/
rowHeight: 19,
<div id="cfg-Ext.ux.grid.BufferView-borderHeight"></div>/**
* @cfg {Number} borderHeight
* The combined height of border-top and border-bottom of a row.
*/
borderHeight: 2,
<div id="cfg-Ext.ux.grid.BufferView-scrollDelay"></div>/**
* @cfg {Boolean/Number} scrollDelay
* The number of milliseconds before rendering rows out of the visible
* viewing area. Defaults to 100. Rows will render immediately with a config
* of false.
*/
scrollDelay: 100,
<div id="cfg-Ext.ux.grid.BufferView-cacheSize"></div>/**
* @cfg {Number} cacheSize
* The number of rows to look forward and backwards from the currently viewable
* area. The cache applies only to rows that have been rendered already.
*/
cacheSize: 20,
<div id="cfg-Ext.ux.grid.BufferView-cleanDelay"></div>/**
* @cfg {Number} cleanDelay
* The number of milliseconds to buffer cleaning of extra rows not in the
* cache.
*/
cleanDelay: 500,
initTemplates : function(){
Ext.ux.grid.BufferView.superclass.initTemplates.call(this);
var ts = this.templates;
// empty div to act as a place holder for a row
ts.rowHolder = new Ext.Template(
'<div class="x-grid3-row {alt}" style="{tstyle}"></div>'
);
ts.rowHolder.disableFormats = true;
ts.rowHolder.compile();
ts.rowBody = new Ext.Template(
'<table class="x-grid3-row-table" border="0" cellspacing="0" cellpadding="0" style="{tstyle}">',
'<tbody><tr>{cells}</tr>',
(this.enableRowBody ? '<tr class="x-grid3-row-body-tr" style="{bodyStyle}"><td colspan="{cols}" class="x-grid3-body-cell" tabIndex="0" hidefocus="on"><div class="x-grid3-row-body">{body}</div></td></tr>' : ''),
'</tbody></table>'
);
ts.rowBody.disableFormats = true;
ts.rowBody.compile();
},
getStyleRowHeight : function(){
return Ext.isBorderBox ? (this.rowHeight + this.borderHeight) : this.rowHeight;
},
getCalculatedRowHeight : function(){
return this.rowHeight + this.borderHeight;
},
getVisibleRowCount : function(){
var rh = this.getCalculatedRowHeight(),
visibleHeight = this.scroller.dom.clientHeight;
return (visibleHeight < 1) ? 0 : Math.ceil(visibleHeight / rh);
},
getVisibleRows: function(){
var count = this.getVisibleRowCount(),
sc = this.scroller.dom.scrollTop,
start = (sc === 0 ? 0 : Math.floor(sc/this.getCalculatedRowHeight())-1);
return {
first: Math.max(start, 0),
last: Math.min(start + count + 2, this.ds.getCount()-1)
};
},
doRender : function(cs, rs, ds, startRow, colCount, stripe, onlyBody){
var ts = this.templates,
ct = ts.cell,
rt = ts.row,
rb = ts.rowBody,
last = colCount-1,
rh = this.getStyleRowHeight(),
vr = this.getVisibleRows(),
tstyle = 'width:'+this.getTotalWidth()+';height:'+rh+'px;',
// buffers
buf = [],
cb,
c,
p = {},
rp = {tstyle: tstyle},
r;
for (var j = 0, len = rs.length; j < len; j++) {
r = rs[j]; cb = [];
var rowIndex = (j+startRow),
visible = rowIndex >= vr.first && rowIndex <= vr.last;
if (visible) {
for (var i = 0; i < colCount; i++) {
c = cs[i];
p.id = c.id;
p.css = i === 0 ? 'x-grid3-cell-first ' : (i == last ? 'x-grid3-cell-last ' : '');
p.attr = p.cellAttr = "";
p.value = c.renderer(r.data[c.name], p, r, rowIndex, i, ds);
p.style = c.style;
if (p.value === undefined || p.value === "") {
p.value = " ";
}
if (r.dirty && typeof r.modified[c.name] !== 'undefined') {
p.css += ' x-grid3-dirty-cell';
}
cb[cb.length] = ct.apply(p);
}
}
var alt = [];
if(stripe && ((rowIndex+1) % 2 === 0)){
alt[0] = "x-grid3-row-alt";
}
if(r.dirty){
alt[1] = " x-grid3-dirty-row";
}
rp.cols = colCount;
if(this.getRowClass){
alt[2] = this.getRowClass(r, rowIndex, rp, ds);
}
rp.alt = alt.join(" ");
rp.cells = cb.join("");
buf[buf.length] = !visible ? ts.rowHolder.apply(rp) : (onlyBody ? rb.apply(rp) : rt.apply(rp));
}
return buf.join("");
},
isRowRendered: function(index){
var row = this.getRow(index);
return row && row.childNodes.length > 0;
},
syncScroll: function(){
Ext.ux.grid.BufferView.superclass.syncScroll.apply(this, arguments);
this.update();
},
// a (optionally) buffered method to update contents of gridview
update: function(){
if (this.scrollDelay) {
if (!this.renderTask) {
this.renderTask = new Ext.util.DelayedTask(this.doUpdate, this);
}
this.renderTask.delay(this.scrollDelay);
}else{
this.doUpdate();
}
},
onRemove : function(ds, record, index, isUpdate){
Ext.ux.grid.BufferView.superclass.onRemove.apply(this, arguments);
if(isUpdate !== true){
this.update();
}
},
doUpdate: function(){
if (this.getVisibleRowCount() > 0) {
var g = this.grid,
cm = g.colModel,
ds = g.store,
cs = this.getColumnData(),
vr = this.getVisibleRows(),
row;
for (var i = vr.first; i <= vr.last; i++) {
// if row is NOT rendered and is visible, render it
if(!this.isRowRendered(i) && (row = this.getRow(i))){
var html = this.doRender(cs, [ds.getAt(i)], ds, i, cm.getColumnCount(), g.stripeRows, true);
row.innerHTML = html;
}
}
this.clean();
}
},
// a buffered method to clean rows
clean : function(){
if(!this.cleanTask){
this.cleanTask = new Ext.util.DelayedTask(this.doClean, this);
}
this.cleanTask.delay(this.cleanDelay);
},
doClean: function(){
if (this.getVisibleRowCount() > 0) {
var vr = this.getVisibleRows();
vr.first -= this.cacheSize;
vr.last += this.cacheSize;
var i = 0, rows = this.getRows();
// if first is less than 0, all rows have been rendered
// so lets clean the end...
if(vr.first <= 0){
i = vr.last + 1;
}
for(var len = this.ds.getCount(); i < len; i++){
// if current row is outside of first and last and
// has content, update the innerHTML to nothing
if ((i < vr.first || i > vr.last) && rows[i].innerHTML) {
rows[i].innerHTML = '';
}
}
}
},
removeTask: function(name){
var task = this[name];
if(task && task.cancel){
task.cancel();
this[name] = null;
}
},
destroy : function(){
this.removeTask('cleanTask');
this.removeTask('renderTask');
Ext.ux.grid.BufferView.superclass.destroy.call(this);
},
layout: function(){
Ext.ux.grid.BufferView.superclass.layout.call(this);
this.update();
}
});// We are adding these custom layouts to a namespace that does not
// exist by default in Ext, so we have to add the namespace first:
Ext.ns('Ext.ux.layout');
<div id="cls-Ext.ux.layout.CenterLayout"></div>/**
* @class Ext.ux.layout.CenterLayout
* @extends Ext.layout.FitLayout
* <p>This is a very simple layout style used to center contents within a container. This layout works within
* nested containers and can also be used as expected as a Viewport layout
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
龙博甘特图控件(Web版)源码 特图(Gantt chart )又叫横道图、条状图(Bar chart)。它是以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间。 Ext Gantt甘特图是基于Extjs核心库的开发的,基于WEB浏览器的甘特图解决方案。可应用于项目管理系统、 生产执行系统(MES)、资源管理 系统(ERP)或其它的任务资源分配相关领域的应用程序的。Ext Gantt甘特图完全兼容Extjs语法,熟悉Extjs可以轻易上手。 Ext Gantt甘特图可与任意后端代码(.net, jsp)集成为jsp甘特图,asp.net甘特图等。
资源推荐
资源详情
资源评论
收起资源包目录
龙博甘特图控件(Web版) (2000个子文件)
Dependencies.asmx 123B
Tasks.asmx 97B
Default.old.aspx 2KB
Default.aspx 2KB
ResolveAssemblyReference.cache 209KB
DesignTimeResolveAssemblyReferencesInput.cache 9KB
tasks.js.cn 7KB
dependencies.js.cn 1KB
Web.config 7KB
DataClasses11.designer.cs 11KB
DataClasses1.designer.cs 10KB
Tasks.asmx.cs 3KB
Dependencies.asmx.cs 2KB
AssemblyInfo.cs 1KB
Default.aspx.designer.cs 774B
Default.aspx.cs 340B
DataClasses1.cs 0B
Ext Gantt CRUD Demo.csproj 6KB
ext-all.css 136KB
ext-all.css 132KB
ext-all.css 132KB
ext-all-notheme.css 98KB
xtheme-gray.css 37KB
silk.css 17KB
calendar.css 17KB
ux-all.css 17KB
sch-gantt-all.css 15KB
sch-gantt-all.css 15KB
desktop.css 13KB
grid.css 11KB
form.css 10KB
extjs.css 8KB
button.css 8KB
panel.css 8KB
tabs.css 7KB
grid.css 6KB
style.css 6KB
grid.css 6KB
grid.css 6KB
docs.css 6KB
panel-reset.css 6KB
sch.gantt.event.css 6KB
GroupTab.css 6KB
core.css 5KB
toolbar.css 5KB
feed-viewer.css 5KB
feed-viewer.css 5KB
layout.css 5KB
date-picker.css 5KB
tree.css 4KB
feed-viewer-access.css 4KB
menu.css 4KB
tree.css 4KB
form.css 4KB
window.css 3KB
tree.css 3KB
sch.gantt.dependencymanager.css 3KB
tree.css 3KB
button.css 3KB
print.css 3KB
toolbar.css 3KB
tasks.css 3KB
tabs.css 3KB
date-picker.css 3KB
editor.css 3KB
tabs.css 3KB
resizable.css 3KB
date-picker.css 3KB
date-picker.css 3KB
statusbar.css 3KB
form.css 3KB
tabs.css 3KB
style2.css 3KB
style2.css 3KB
forum.css 3KB
toolbar.css 3KB
toolbar.css 3KB
qtips.css 3KB
form.css 2KB
layout-browser.css 2KB
style1.css 2KB
style1.css 2KB
button.css 2KB
button.css 2KB
TreeGrid.css 2KB
style3.css 2KB
style3.css 2KB
restful.css 2KB
img-org.css 2KB
panel.css 2KB
panel.css 2KB
slider.css 2KB
panel.css 2KB
sch.gantt.resize.css 2KB
window.css 2KB
advanced.css 2KB
menu.css 2KB
chooser.css 2KB
window.css 2KB
window.css 2KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
ss_geng
- 粉丝: 319
- 资源: 3220
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页