左右两个表格的内容相互移动

最近实现了一个小功能是将左右两个表格的数据相互移动,以达到人员分类的效果。代码如下


<div class="open-div-box">
  <h2>商户教练列表</h2>
  <!--弹出层主体S-->
  <div class="open-div-con-box" >
    <div class="table-list-3" id="main_div">
      <table id="leftSelect" width="46%" border="0" cellspacing="0" cellpadding="0" style="display: inline-block;margin-right:30px;vertical-align: top;">
      	<tr class='bg-1'>
      		<td colspan='10' align='center' style="background: #c2e39e;">已添加</td>
      		
      	</tr>
        <tr>
          <th align="center" width="5%">教练姓名</th>
          <th align="center" width="5%">教练昵称</th>
          <th align="center" width="2%">选择</th>
        </tr>
        	<!--<tr class='bg-1'><td colspan='10' align='center'>没有教练...</td></tr>-->
        	<tr class='bg-1' >
				<td align='center'>林四岁111</td>
				<td align='center'>Cathy</td>
				<td><input name="stuCheckBox" type="checkbox"/></td>
		   </tr>
		   <tr class='bg-0' >
				<td align='center'>1</td>
				<td align='center'>1</td>
				<td><input name="stuCheckBox" type="checkbox"/></td>
		   </tr>
		   <tr class='bg-1' >
				<td align='center'>周斌</td>
				<td align='center'>1</td>
				<td><input name="stuCheckBox" type="checkbox"/></td>
					
		   </tr>
		   	<tr class='bg-1' id="L-lastLine">
			   <td align='center' colspan='10' align='center'>
			     	<input type="checkbox" value="全选"  class="selectall" />全选
					<input id="toRight" type="button" value="移出" style="margin-left: 10px;" onclick="delTeacher('${teacher.TEACHER_ID}')" />
				</td>	
			
			</tr>
	</table>
	<!--未添加-->
	
	 <table id="rightSelect" width="46%" border="0" cellspacing="0" cellpadding="0" style="display: inline-block;margin-left:30px ;vertical-align: top;">
      	<tr class='bg-1'>
      		<td colspan='10' align='center' style="background: #c2e39e;">未添加</td>
      		
      	</tr>
        <tr>
          <th align="center" width="5%">教练姓名</th>
          <th align="center" width="5%">教练昵称</th>
          <th align="center" width="2%">选择</th>
         
        </tr>
        	<!--<tr class='bg-1'><td colspan='10' align='center'>没有教练...</td></tr>-->
        	<tr class='bg-1' >
				<td align='center'>周斌</td>
				<td align='center'>Cathy</td>
				<td><input name="stuCheckBox" type="checkbox"/></td>
				
		   </tr>
		   <tr class='bg-0' >
				<td align='center'>林四岁</td>
				<td align='center'>Cathy</td>
				<td><input name="stuCheckBox" type="checkbox"/></td>
				
		   </tr>
		   <tr class='bg-1' >
				<td align='center'>周斌</td>
				<td align='center'>Cathy</td>
				<td><input name="stuCheckBox"  type="checkbox"/></td>
			
		   </tr>
		   <tr class='bg-0' >
				<td align='center'>1</td>
				<td align='center'>1</td>
				<td><input name="stuCheckBox" type="checkbox"/></td>	
		   </tr>
		   <tr class='bg-1' >
				<td align='center'>1</td>
				<td align='center'>1</td>
				<td><input name="stuCheckBox" type="checkbox"/></td>
				
					
		   </tr>
		   	<tr class='bg-1' id="R-lastLine">
		   		
			   <td align='center' colspan='10' align='center'>
			   	    <input type="checkbox" class="selectall"  />全选
					<input id="toLeft" type="button" value="添加" style="margin-left: 10px;" onclick="delTeacher('${teacher.TEACHER_ID}')" />
				</td>	
			
			</tr>
	</table>
	
	
	
	
    </div>
    <div class="but-box">
        <input type="button" value="关闭" onClick="parent.SLB();">&nbsp;&nbsp;
        
    </div>
  </div>
  <!--弹出层主体E--> 
</div>

通过jquery控制数据的移动:

<script>
	 $(document).ready(function(){
	 	
                //将左边数据移动到右边
                $("#toRight").click(function(){
                //将左边option中选中的值赋给vSelect变量
                var vSelect=$("#leftSelect input[name='stuCheckBox']:checked");
                //将数据添加到rightSelect中
               $("#R-lastLine").before(vSelect.parent().parent().clone());
                //同时删除leftSelect中的数据
                vSelect.parent().parent().remove();                   
                });
  
//                将右边数据移动到左边
                $("#toLeft").click(function(){
                    var vSelect=$("#rightSelect input[name='stuCheckBox']:checked");
                    //将右边的数据追加到左边列表中
                    $("#L-lastLine").before(vSelect.parent().parent().clone());
                    
//                  vSelect.clone().appendTo("#leftSelect");
                    vSelect.parent().parent().remove();
                });
  



 				//将左边全部数据移到右边

				$('#leftSelect .selectall').click(function(){
                  
	                if(this.checked){
	                        $('#leftSelect input[name="stuCheckBox"]').each(function(){
	                                //此处如果用attr,会出现第三次失效的情况
	                                    $(this).attr("checked",true);
	                                });
	                }else{
	                        $('#leftSelect input[name="stuCheckBox"]').each(function(){
	                                    $(this).removeAttr("checked",false);
	                                });
	                                //$(this).removeAttr("checked");
	                }
                
                });
                  
                
                 //将右边数据全部移到左边
                $('#rightSelect .selectall').click(function(){
                  
	                if(this.checked){
	                        $('#rightSelect input[name="stuCheckBox"]').each(function(){
	                                //此处如果用attr,会出现第三次失效的情况
	                                    $(this).attr("checked",true);
	                                });
	                }else{
	                        $('#rightSelect input[name="stuCheckBox"]').each(function(){
	                                    $(this).removeAttr("checked",false);
	                                });
	                                //$(this).removeAttr("checked");
	                }

       			});


 });
	
</script>

效果如下:

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的实现: TreeWidgetItemDrag.h ```cpp #ifndef TREEWIDGETITEMDRAG_H #define TREEWIDGETITEMDRAG_H #include <QWidget> #include <QTreeWidget> namespace Ui { class TreeWidgetItemDrag; } class TreeWidgetItemDrag : public QWidget { Q_OBJECT public: explicit TreeWidgetItemDrag(QWidget *parent = nullptr); ~TreeWidgetItemDrag(); private: Ui::TreeWidgetItemDrag *ui; void setupTreeWidget(QTreeWidget *treeWidget); private slots: void on_treeWidget_1_itemDragged(QTreeWidgetItem *item); void on_treeWidget_2_itemDragged(QTreeWidgetItem *item); }; #endif // TREEWIDGETITEMDRAG_H ``` TreeWidgetItemDrag.cpp ```cpp #include "TreeWidgetItemDrag.h" #include "ui_Treewidgetitemdrag.h" #include <QDebug> TreeWidgetItemDrag::TreeWidgetItemDrag(QWidget *parent) : QWidget(parent), ui(new Ui::TreeWidgetItemDrag) { ui->setupUi(this); setupTreeWidget(ui->treeWidget_1); setupTreeWidget(ui->treeWidget_2); } TreeWidgetItemDrag::~TreeWidgetItemDrag() { delete ui; } void TreeWidgetItemDrag::setupTreeWidget(QTreeWidget *treeWidget) { // 设置treewidget为横向的表格 treeWidget->setColumnCount(3); treeWidget->setHeaderLabels(QStringList() << "Column 1" << "Column 2" << "Column 3"); // 允许treewidget的items拖动 treeWidget->setDragEnabled(true); // 设置treewidget接受拖放事件 treeWidget->setAcceptDrops(true); // 设置treewidget在拖动item时,显示的内容 treeWidget->setDragDropMode(QAbstractItemView::DragDrop); // 设置treewidget在释放item时,移动item treeWidget->setDefaultDropAction(Qt::MoveAction); // 设置treewidget的items不能被编辑 treeWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); // 允许treewidget的items在内部移动 treeWidget->setMovement(QTreeWidget::InternalMove); } void TreeWidgetItemDrag::on_treeWidget_1_itemDragged(QTreeWidgetItem *item) { ui->treeWidget_1->takeTopLevelItem(ui->treeWidget_1->indexOfTopLevelItem(item)); ui->treeWidget_2->addTopLevelItem(item); } void TreeWidgetItemDrag::on_treeWidget_2_itemDragged(QTreeWidgetItem *item) { ui->treeWidget_2->takeTopLevelItem(ui->treeWidget_2->indexOfTopLevelItem(item)); ui->treeWidget_1->addTopLevelItem(item); } ``` 其中ui界面可以使用Qt Designer进行设计,也可以手写代码。这里使用Qt Designer设计的ui文件为: TreeWidgetItemDrag.ui ```xml <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>TreeWidgetItemDrag</class> <widget class="QWidget" name="TreeWidgetItemDrag"> <property name="windowTitle"> <string>Tree Widget Item Drag</string> </property> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>400</width> <height>300</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QLabel" name="label"> <property name="text"> <string>Drag and drop items between two tree widgets:</string> </property> </widget> </item> <item> <widget class="QSplitter" name="splitter"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <widget class="QTreeWidget" name="treeWidget_1"> <property name="maximumWidth"> <number>16777215</number> </property> </widget> <widget class="QTreeWidget" name="treeWidget_2"> <property name="maximumWidth"> <number>16777215</number> </property> </widget> </widget> </item> </layout> </widget> <resources/> <connections/> </ui> ``` 在主窗口中,只需要实例化TreeWidgetItemDrag类并将其添加到主窗口中即可: MainWindow.cpp ```cpp #include "MainWindow.h" #include "ui_MainWindow.h" #include "TreeWidgetItemDrag.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // 实例化TreeWidgetItemDrag类并将其添加到主窗口中 ui->centralWidget->layout()->addWidget(new TreeWidgetItemDrag(this)); } MainWindow::~MainWindow() { delete ui; } ``` 这样,就可以实现两个treewidget之间的拖动了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值