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

 更新时间:2009年11月13日 21:19:04   作者:  
学习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>

相关文章

  • asp.net中ADO SQL数据库 笔记汇总 持续更新中

    asp.net中ADO SQL数据库 笔记汇总 持续更新中

    asp.net中ADO SQL数据库 笔记汇总 持续更新中,需要的朋友可以参考下
    2012-07-07
  • ASP.NET2.0缓存(Cache)技术深入理解

    ASP.NET2.0缓存(Cache)技术深入理解

    缓存技术是ASP.NET2.0非常重要的一个特性,它提供了一种非常好的本地数据缓存机制,从而有效的提高数据访问的性能
    2012-11-11
  • Asp.net webForm设置允许表单提交Html的方法

    Asp.net webForm设置允许表单提交Html的方法

    下面小编就为大家分享一篇Asp.net webForm设置允许表单提交Html的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • .NET使用System.Timers.Timer类实现程序定时执行

    .NET使用System.Timers.Timer类实现程序定时执行

    这篇文章介绍了.NET使用System.Timers.Timer类实现程序定时执行的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • ASP.NET泛型三之使用协变和逆变实现类型转换

    ASP.NET泛型三之使用协变和逆变实现类型转换

    这篇文章介绍了ASP.NET使用协变和逆变实现泛型类型转换的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • ASP.NET Core中的Http缓存使用

    ASP.NET Core中的Http缓存使用

    这篇文章主要介绍了ASP.NET Core中的Http缓存使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • asp.net实现md5加密

    asp.net实现md5加密

    MD5加密简单的说就是把一段明文 通过某种运算方式 求出密文。在ASP.NET中MD5的加密方式很简单,详细介绍看下文
    2014-03-03
  • CheckBox控件默认选中,提交时永远获得选中状态的实现代码

    CheckBox控件默认选中,提交时永远获得选中状态的实现代码

    下面小编就为大家带来一篇CheckBox控件默认选中,提交时永远获得选中状态的实现代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • 压力测试中需要掌握的几个基本概念

    压力测试中需要掌握的几个基本概念

    一个asp.net的页面。对于压力测试,必须时时刻刻做,如果不知道自己的应用能够承载多少的并发用户数,那基本上就是在扔定时炸弹
    2011-09-09
  • asp.net CommunityServer中的wwwStatus

    asp.net CommunityServer中的wwwStatus

    最近不得不对这个论坛进行研究,以适应后面的发展,现在同事研究太吃力了,以后改些东西,估计又要...打开web项目中的communityserver.config发现一个有趣的地方。
    2009-03-03

最新评论