记录点滴

记录生活

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

一个表格里面有多行数据,可能你有把某一行,上移 ,下移,移到第一移,最后一行的需求.

为了方便,使用Asp.net中的DataGrid来实现表格.

DataGrid代码

<asp:datagrid id=DataGrid1  runat="server" AutoGenerateColumns="False" Width="100%">
<Columns>
<asp:BoundColumn DataField="ID" HeaderText="ID"></asp:BoundColumn>
<asp:BoundColumn DataField="Email" HeaderText="Email"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="操作">
<ItemTemplate>
<INPUT type=button value=First onclick="Move_first(this)">
<INPUT type=button value=Up onclick="Move_up(this)">
<INPUT type=button value=Down onclick="Move_down(this)">
<INPUT type=button value=Last onclick="Move_last(this)">
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>

 

JavaScript代码

    <script language=javascript>
             function Move_up(src)
       {        
         var rowIndex=src.parentElement.parentElement.rowIndex;
         if (rowIndex>=2)
           change_row(rowIndex-1,rowIndex);      
       }
      
       function Move_down(src)
       {
         var rowIndex=src.parentElement.parentElement.rowIndex;
         var tl = document.getElementById("DataGrid1");
         if (rowIndex<tl.rows.length-1)
           change_row(rowIndex+1,rowIndex);
       }
      
       function Move_first(src)
       {
         change_row(1,src.parentElement.parentElement.rowIndex);
       }
      
       function Move_last(src)
       {
          var tl = document.getElementById("DataGrid1");
          change_row(tl.rows.length-1,src.parentElement.parentElement.rowIndex);            
       }
      
      function change_row(line1,line2)
      {
         var tl = document.getElementById("DataGrid1");
         tl.rows[line1].swapNode(tl.rows[line2]);
      }

    </script>

后台读取数据,填充到DataGrid省略.

实际上在表格里面交换两行非常容易.

var tl = document.getElementById("DataGrid1");
tl.rows[line1].swapNode(tl.rows[line2]);

DataGrid1是要交换的表名,line1,line2是要交换的两行的行索引,从0开始计数.

swapNode交换的方法.

src.parentElement.parentElement.rowIndex是得到按钮所在行的行索引,

因为按钮的父结点是<td>,<td>的父结点才是<tr>也就是行,所以用了两次parentElement.

if (rowIndex>=2) 因为表头不参予交换,所以这里面是>=2,如果没有表头,或者表头也要参予交换,

则改写为>=1.

posted on 2008-08-21 14:54  啊峰  阅读(1326)  评论(0编辑  收藏  举报