订阅 漓筝轩 的RSS 

实现功能:

  1. 在Table上实现行的拖动。支持预览
  2. 忽略THEAD/TFoot的行

支持的两个函数

if(window.scrollTop==null)

{

    window.scrollTop=function()

    {

        return window.document.body.scrollTop || window.document.documentElement.scrollTop;

    }

}

if(null==window.scrollLeft)

{

    window.scrollLeft=function()

    {

        return window.document.body.scrollLeft || window.document.documentElement.scrollLeft;

    }

}

主要功能函数

if(null==window.XTable)

{

    window.XTable={};

    window.XTable.DragDrop={};

    window.XTable.DragDrop.tempRow=null;

    window.XTable.DragDrop.isProcessing=false;

    window.XTable.DragDrop.bgColorInitRow=null;

    window.XTable.DragDrop.bgColorOverRow=null;

    window.XTable.DragDrop.rowOver=null;

    window.XTable.DragDrop.divStyle="color:white;"+

        "background-color:#6E7B8B;"+

        "position:absolute;"+

        "z-index:9000;"+

        "border:solid 2px #68228B;"+

        "width:300px;"+

        "padding:2px;";

    window.XTable.DragDrop.tdStyle="color:#98FB98;"+

        "white-space:nowrap;"+

        "border:solid 1px #6C7B8B;"+

        "padding-left:5px;"+

        "padding-right:3px;";

    window.XTable.DragDrop.overColor="#708090";

    window.XTable.DragDrop.maskColor="#CDBA96";

    window.XTable.rowDragDropMouseDown=function(tr)

    {

        if(null==tr||tr.parentElement==null||tr.parentElement.tagName!="TBODY")

        {

            return;

        }

        window.XTable.DragDrop.bgColorInitRow=tr.style.backgroundColor;

        tr.style.backgroundColor=window.XTable.DragDrop.maskColor;

        if(null==window.XTable.DragDrop.tempRow)

        {

            window.XTable.DragDrop.tempRow=document.createElement("<div style='"+window.XTable.DragDrop.divStyle+"'>");

            document.body.appendChild(window.XTable.DragDrop.tempRow);            

            window.XTable.DragDrop.tempRow.appendChild(document.createTextNode("拖动到目标行的上面,本行将自动放在目标行前面"));

        }    

        while(window.XTable.DragDrop.tempRow.children &&window.XTable.DragDrop.tempRow.children.length>1)

        {

            window.XTable.DragDrop.tempRow.removeChild(window.XTable.DragDrop.tempRow.children[1]);

        }

        window.XTable.DragDrop.tempRow.style.display="block";

        window.XTable.DragDrop.tempRow.style.top=event.clientY+scrollTop();

        window.XTable.DragDrop.tempRow.style.left=event.clientX+scrollLeft()+10;

        $A(tr.children).each(function(td,idx)

        {

            var ntd=document.createElement("<span style='"+window.XTable.DragDrop.tdStyle+"'>");

            ntd.appendChild(document.createTextNode(td.innerText));

            window.XTable.DragDrop.tempRow.appendChild(ntd)

        });

        window.XTable.DragDrop.isProcessing=true;

        tr.setCapture();

    }

    window.XTable.rowDragDropMouseMove=function(tr)

    {

        if(null!=window.XTable.DragDrop.rowOver)

        {

            window.XTable.DragDrop.rowOver.style.backgroundColor=window.XTable.DragDrop.bgColorOverRow;

            window.XTable.DragDrop.rowOver=null;

        }

        if(false==window.XTable.DragDrop.isProcessing)

        {

            return false;

        }

        window.XTable.DragDrop.tempRow.style.top=event.clientY+scrollTop();

        window.XTable.DragDrop.tempRow.style.left=event.clientX+scrollLeft()+10;

        var target=document.elementFromPoint(event.x,event.y);

        while( null != target && target.tagName!="TR" )

        {

            target = target.parentElement;

        }

        if(!target||null==target.parentElement||target.parentElement.tagName!="TBODY")

        {

            return;

        }

        window.XTable.DragDrop.bgColorOverRow=target.style.backgroundColor;

        window.XTable.DragDrop.rowOver=target;

        target.style.backgroundColor=window.XTable.DragDrop.overColor;

    }

    window.XTable.rowDragDropMouseUp=function(tr)

    {

        tr.releaseCapture();

        tr.style.backgroundColor=window.XTable.DragDrop.bgColorInitRow;

        if(null!=window.XTable.DragDrop.rowOver)

        {

            window.XTable.DragDrop.rowOver.style.backgroundColor=window.XTable.DragDrop.bgColorOverRow;

            window.XTable.DragDrop.rowOver=null;

        }

        if(null!=window.XTable.DragDrop.tempRow)

        {

            window.XTable.DragDrop.tempRow.style.display="none";

        }

        if(!window.XTable.DragDrop.isProcessing)

        {

            return false;

        }

        window.XTable.DragDrop.isProcessing=false;

        var target=document.elementFromPoint(event.x,event.y);

        while( null != target && target.tagName!="TR" )

        {

            target = target.parentElement;

        }

        if(!target||null==target.parentElement||target.parentElement.tagName!="TBODY")

        {

            return;

        }

        target.insertAdjacentElement("BeforeBegin",tr);

    }

    window.XTable.makeDragDrop=function(tablename)

    {

        var table=$(tablename);

        if(null==table)

        {

            return;

        }

        if(!table.tBodies||table.tBodies.length<1)

        {

            return;

        }

        $A(table.tBodies[0].rows).each(function(tr,n)

        {

            (function(tr)

            {

                tr.onmousedown=function()

                {

                    window.XTable.rowDragDropMouseDown(tr);

                }

                tr.onmousemove=function()

                {

                    window.XTable.rowDragDropMouseMove(tr);

                }

                tr.onmouseup=function()

                {

                    window.XTable.rowDragDropMouseUp(tr);

                }

            }

            )(tr);

        });

    }

}

测试的脚本如下

<div style="width:200px;float:left">AAA</div>

<div style="">

    <TABLE WIDTH="800" BORDER="1" ID="AAAAAA" >

    <THead>

         <TR><TD>Header0</TD><TD>Header1</TD><TD>Header2</TD></TR>

    </THead>

    <tbody>

     <TR style="background-color:"><TD>ROW_0</TD><TD>ROW_0_CELL_1</TD><TD>ROW_0_CELL2_1</TD></TR>

     <TR style="background-color:black;color:white"><TD>ROW_1</TD><TD>ROW_1_CELL_2</TD><TD>ROW_1_CELL2_2</TD></TR>

     <TR style="background-color:white"><TD>ROW_2</TD><TD>ROW_2_CELL_3</TD><TD>ROW_2_CELL2_3</TD></TR>

     <TR style="background-color:menu"><TD>ROW_3</TD><TD>ROW_3_CELL_4</TD><TD>ROW_3_CELL2_4</TD></TR>

     <TR style="background-color:yellow"><TD>ROW_4</TD><TD>ROW_4_CELL_5</TD><TD>ROW_4_CELL2_5</TD></TR>

     <TR style="background-color:green"><TD>ROW_5</TD><TD>ROW_5_CELL_6</TD><TD>ROW_5_CELL2_6</TD></TR>

     <TR style="background-color:blue"><TD>ROW_6</TD><TD>ROW_6_CELL_7</TD><TD>ROW_6_CELL2_7</TD></TR>

     <TR style="background-color:red"><TD>ROW_7</TD><TD>ROW_7_CELL_8</TD><TD>ROW_7_CELL2_8</TD></TR>

    </tbody>

    <TFOOT>

         <TR><TD>Footer</TD><TD>Footer</TD><TD>Footer</TD></TR>

    </TFOOT>

    </TABLE>

</div>

<script type="text/javascript" defer>

    window.XTable.makeDragDrop("AAAAAA");

</script>


posted @ 2007-12-12 18:02 Jeason 阅读(1208) 评论(1) 编辑

更多的沈胜衣的文章,请访问此处

前面的几次报表系统交流,不管是不是我做的,效果都不是很好,当时只看到了表象,觉得是别人的原因,现在想起来,应该是自己的偏置所导致这种情况,我无意以什么手段或者方式来说服人,但是我会正确的表达我的想法,正是这种过于理想化的想法促使了今天的结果。

在我参加其他厂商的培训的时候,我大多数时候都是在本子上乱画,我觉得在这个时候我真正关心的不是讲台上的仁兄正在讲的,我只要知道关键字就可以了,而更多的信息我可能来源于网络,也可能求助于书籍,但是肯定不是课堂填鸭式的教学,也不会式面对面的交流。我注重在整个过程中的个人体验,而不是结果。我去参加培训,可能式迫不得已,更多的时候,可能是找个地方休息休息自己的脑袋。

如果我能够把以上的思维推及到自己的PPT讲座中,那么我还可能有最开始的偏激的想法么?

很像是一种高傲蒙蔽了眼睛。我从事了四年的经营分析的开发,从最低层的数据建模到ETL到最终的OLAP展现我都参与过,在这个期间,我自己编写代码实现了一个ETL抽取系统和一个简单的统计报表系统,在这个时候,数据仓库的概念已经深深植根于我这个不太大的脑袋中,所以就产生了很多技术人员所犯的错误:间歇性的技术视觉无视!

我很多时候都TM语重心长的告诉兄弟们,任何事情存在必然有他的道理。为什么夏桀都成武王所说的那么不堪了,武王伐纣还是花了那么大的工夫?为什么CELL组件如此难用,还是有用那么多的MM在网络、杂志上打广告?不错,正是因为这种盲试,所以导致我没有仔细的思考问题。同样没有花功夫去思考报表系统的适应性的问题。

在离开上一家公司的时候,老领导担心我对现在经营分析系统甩手不管了,我很恳切的说,那经营分析系统对我而言,就像一个孩子,不管他存在多大的缺点,他还是我的孩子,我倾注了那么多功夫在这个系统之上,我不会坐视他的消亡。

这个报表系统正是脱胎于经营分析系统的报表系统,在这个时候我不会放弃,所以我将新的CodeName命名未ERIS.

回到最初的标题,在交流中我们的确还存在很大的问题,忽视了受众 本身的问题,或者说是当受众是技术人员的时候,我们的考虑不是很足够。在讲PPT的时候,我过分的关注了PPT的内容,忘记了关注受众的接受程度,其实归根结底,就是技术基础的问题。

如果受众是客户,我可能会慎重很多,对PPT的材料准备,布局等等考虑的更多,但是对方是自己部门和其他兄弟部门的开发人员的时候就不太注意这个问题了,我的确是忘记了演说者的第一要素:你要当你在任何时候都可以以正确的方式说出你想说的正确的事情。

温博格老先生拿这事情开了一个玩笑,说这个就是交流的输出过度,输出过度是指在老式的磁带机上,如果输出的字节的速度大于打点设备的速度就会出现字符丢失或者重叠,从而导致信息的曲解甚至误解。同时,温博格老先生举的那个学生的例子,和我面对的情况非常相似,汗!

posted @ 2007-12-12 10:33 Jeason 阅读(144) 评论(0) 编辑
订阅 漓筝轩 的RSS