|
学习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>
|
|