服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

asp.net+jquery Gridview的多行拖放, 以及跨控件拖放

2019-06-21 11:47ASP.NET之家 ASP.NET教程

学习JQuery时,发现JQuery只能做单行拖放, 于是花时间做了一个多行拖放的例子, 以备以后使用。

代码如下:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
<script type="text/javascript" src="jquery-1.3.2.js"></script> 
<script type="text/javascript" src="jquery-ui-1.7.2.custom.js"></script> 
<script type="text/javascript"> 
//=================================== 
//dragg and drop sample program 
//authored by gujinsong@trans-cosmos 
//2009-11-11 
//=================================== 
//temporary var that stored selected rows 
var SelectedRows = []; 
//forbid all select 
document.onselectstart = function() { return false; } 
//fires when dragg object go out the source table 
$(document).mouseup(function() { 
$(".float").hide(); 
$(".float")[0].innerHTML = ""; 
IsDragging = false; 

).mousemove(function(e) { 
if (IsDragging == true) { 
$(".float").css("top", e.clientY + 2); 
$(".float").css("left", e.clientX + 2); 
$(".float").show(); 

}); 
// flag that indicates whether is during dragging 
var IsDragging = false; 
//using jquery give mouse event to each rows 
$(document).ready(function() { 
$(".stripe tr").mousedown( 
function(e) { 
if (this.innerHTML.substring(0, 3) == "<TH") return false; 
if (!e) var e = window.event; 
if (!e.ctrlKey) { 
unselectAll(); 

if ($(this).context.className == "over") { 
$(this).removeClass("over"); 
unselect(); 

else { 
$(this).addClass("over"); 
SelectedRows.push($(this)); 
//set style 
$(".float").css("top", e.clientY + 5); 
$(".float").css("left", e.clientX + 5); 
$(".float").css("zIndex", 1); 
$(".float").css("position", "absolute"); 
$(".float").width($(this).width()); 
$(".float").height($(this).height() * SelectedRows.length); 
for (var i = 0; i < SelectedRows.length; i++) { 
$(".float").append(SelectedRows[i].clone()); 

$(".float").wrapInner("<table></table>"); 


).mouseup(function() { 
if (this.innerHTML.substring(0, 3) == "<TH") { 
$(".float").fadeOut("normal"); 
$(".float")[0].innerHTML = ""; 
IsDragging = false; 
} ; 
if ($(this).context.className != "over" && IsDragging == 1) { 
DraggStop($(this)); 

}).mousemove(function(e) { 
if (this.innerHTML.substring(0, 3) == "<TH") return false; 
if (e.button == 1) { 
IsDragging = true; 
$(".float").css("top", e.clientY + 2); 
$(".float").css("left", e.clientX + 2); 
$(".float").fadeIn("normal"); //show(); 

}) 
}); 
// function that re-sort rows 
function DraggStop(item) { 
$(".stripe tr").each(function() { 
if (this.className == "over") { 
$(this).insertBefore(item); 

}); 

//clear all selected rows 
function unselectAll() { 
for (var i = SelectedRows.length-1; i > -1; i--) 

SelectedRows[i].removeClass("over"); 
SelectedRows.pop(i); 


//un-select current row 
function unselect() { 
for (var i = SelectedRows.length-1; i > -1; i--) 

if (SelectedRows[i].context.className != "over") { 
SelectedRows[i].removeClass("over"); 
SelectedRows.pop(i); 



//acceptable control's mouse event 
function Dropable(e) { 
if (IsDragging == true) { 
var txt = document.getElementById("TextBox1") 
txt.value = ""; 
$(".stripe tr").each(function() { 
if (this.className == "over") { 
txt.value = txt.value + this.innerHTML + "\r\n"; 

}); 


</script> 
<style type="text/css"> 
th 

background: #0066FF; 
color: #FFFFFF; 
line-height: 20px; 
height: 30px; 

td 

padding: 6px 11px; 
border-bottom: 1px solid #95bce2; 
vertical-align: top; 
text-align: center; 

td * 

padding: 6px 11px; 

tr.alt td 

background: #ecf6fc; /*这行将给所有的tr加上背景色*/ 

tr.over td 

background: #bcd4ec; /*这个将是鼠标高亮行的背景色*/ 

</style> 
</head> 
<body> 
<div class="float"> 
</div> 
<form id="form1" runat="server"> 
<asp:GridView ID="selectable" runat="server" class="stripe"> 
</asp:GridView> 
<asp:TextBox ID="TextBox1" runat="server" onmouseover="Dropable();" 
Height="210px" TextMode="MultiLine" Width="772px" ></asp:TextBox> 
</form> 
</body> 
</html>

延伸 · 阅读

精彩推荐