storm0
飘零雾雨.闻弦歌而知雅意,顾叶落而晓秋至
等 级:
发表于:2007-12-25 15:11:067楼 得分:0
若无其事的飘过,还没想到办法改进你那个东东 !- -
=====================================暂时先那样用着,也挺好的!
飘零雾雨.闻弦歌而知雅意,顾叶落而晓秋至
等 级:
发表于:2007-12-25 15:11:067楼 得分:0
若无其事的飘过,还没想到办法改进你那个东东 !- -
=====================================暂时先那样用着,也挺好的!
一段代码里面耦合了太多的功能导致重用律大幅降低.
this.init里面的代码太多了,有些能提出来的代码就尽量提出来.
样式的东西能单独存放在css里面尽量不要放在代码里.
整个Grid还不错就是没有扩展的余地.只能用.PS:LZ已经在DOM操作上有很高的造诣.但如果能在程序结构上下点功夫才算是个好的程序员.
说句不好听的,LZ的这段程序的结构只能算刚入门的阶段.
痴情客
等 级:
发表于:2007-12-26 12:45:0027楼 得分:0
貌似没有实际用处啊 ,我要出几万条数据 ,请问可以用你的列表吗?
=========================================================当然可以,就像dhATV3,当然当前版本暂不支持,如果需要,只要更新载入数据方式即可!
var dgvbar = document.createElement("DIV");
//dgvbar.id = "vbar";
dgvbar.style.position = "absolute";
dgvbar.style.width = "17px";
dgvbar.style.height = "100%";
dgvbar.style.left = this.width-17;
dgvbar.style.overflowY = "auto";
dgvbar.style.zIndex = "10";
dgvbar.onscroll = function(){scrv();}
dgvbar.innerHTML = "<div style=\"width:1px;height:100%;overflow-x:hidden;\"> </div>";
可以写个createScroll方法
function $CE(p)
{
return document.createElement(p);
}function createScroll(pE,scrollDate) //{'width':100,'height':200}
{
var e=$CE(pE);
for(scrollDate in o)
{
e.style.o=scrollDate[o];
}
......
......
return e;
}这样滚动条的样子由参数决定,并且该方法可以复用
顺便再接次分,哈哈,多多益善。LZ加油,这个东西不错,看了代码的话,肯定对我有所帮助的,谢谢了
2.grid可否不用array的形式来做,而采取table的形式来做,
可以用以下一种方式(只是简略说明一下看法,CSDN不准贴图-_-!),以下是我的dataGrid思路中一种方式来载入数据
1)dataGrid中可采取数据库的方式,如Date,String,Number,e.g:
<table class="neverModules-dg" id="dataGrid">
<tr>
<th dgType="Number">ID</th>
<th dgType="Date">Date</th>
<th dgType="String">String</th>
</tr>
<tr>
<td>1</td>
<td>2007-8-8</td>
<td>never-online.net</td>
</tr>
...........略
--------
数据表格
</table><script>
//以下为grid实现代码
//grid默认配置的命名空间
neverModules.configuration.dataGrid = function () {
this.defaultstyle= "neverModules-dg";//默认css
this.defaultHeaderRow=10;//默认滚动条最大高度
this.defaultgridType="String";//默认如果没有dgType,则为string型
//more configuration to set grid default style
}
//grid命名空间,即grid "class"编码
neverModules.modules.dataGrid = function () {
//to do
}
//实现属性接口
neverModules.modules.dataGrid.defineAllSetter();
neverModules.modules.dataGrid.defineAllGetter();
</script>
<script>
//以下为用户编码
var dg=new neverModules.modules.dataGrid("dataGrid", //id
new neverModules.configuration.dataGrid());
// 第二个参数可选,为载入默认配置对象也可为jason形式 //实例化//可选 dg.setStyle("neverModules-dg");//设置css class//可选 dg.setHeaderRow(10);//fix headerdg.render();//渲染
</script>这样的好处我觉得在于
1)这样对于程序扩展很有好处(Date,String,Number)用户可自己定义Boolean型等,且比较时,可引入中间层,实现多层方式来控制.且程序整体结构整洁,易于修改
2)利于SEO,虽然用dataGrid有的时候是在后台,但前台用的时候也比较多
3)美工方便界面操作
4)程序方便编写,不用再写js
5)第一次载入时速度快,省略了从array->html的转换,通常用户看grid,不一定是排序,也就是说在initialize时只需要fixHeader即可.
风兄看来很盛产作品嘛,希望有更多代码一起交流:)
嗯?好像很晚了,该睡了....明天还要去送货-_-!
另外我认为grid就是grid
如果封装成类的话就直接封装成grid基类,用你自己的方法去初始化grid.
至于用其他方法去初始化grid那些属于扩展接口方法
例如用table初始化grid,那么只要提供一个将table转换成你的array,再生成grid.当然你也可以默认用table来初始化grid,如果碰到需要用array来初始化时,只要提供将array转换成table的接口方法即可但前提你得有一个良好的扩展性强的基类.