Web中DataGrid綁定資料顯示列可拖動

來源:互聯網
上載者:User
datagrid|web|可拖動|資料|顯示  

在原理主要是js代碼

將如下代碼放在.aspx中

<script language='javascript>

 //判斷滑鼠是否按下
 var mouseDown = false;
 //滑鼠所在地區
 var IsTdArea=0;

 //滑鼠按下
 function MouseDown(obj)
 {
  if(IsTdArea != 0)
  {
   obj.mouseDownY = event.clientY;
   obj.mouseDownX=event.clientX;
   obj.parentTdH = obj.offsetHeight;
   obj.pareneTdW=obj.offsetWidth;
   //獲得table的高度
   obj.pareneTableH=obj.parentElement.parentElement.parentElement.offsetHeight;
   //獲得table的寬度
   obj.pareneTableW=obj.parentElement.parentElement.parentElement.offsetWidth;
   obj.setCapture();
   mouseDown = true;
  }
  else
  {
   mouseDown = false;
  }
 }
 
 function MouseMove(obj)
 {
  if(mouseDown == true)
  {
   if(IsTdArea == 1 || IsTdArea == 2)
   {
    if(!obj.mouseDownX) return false;
    var newWidth=obj.pareneTdW*1+event.clientX*1-obj.mouseDownX;
    if(newWidth>0)
    {
     obj.style.width = newWidth;
     obj.parentElement.parentElement.parentElement.style.width=obj.pareneTableW*1+event.clientX*1-obj.mouseDownX;
    }
   }
   else if(IsTdArea ==3 || IsTdArea == 4)
   {
    if(!obj.mouseDownY) return false;
    var newHeight=obj.pareneTdH*1+event.clientY*1-obj.mouseDownY;
    if(newHeight>0)
    {
     obj.style.Height = newHeight;
     obj.parentElement.parentElement.parentElement.style.Height=obj.pareneTableH*1+event.clientY*1-obj.mouseDownY;
    }
   }
  }
  else
  {
   MouseOverTD(obj);
  }
 }
 
 function MouseUp(obj)
 {
  if(mouseDown == true)
  {
   obj.releaseCapture();
   obj.mouseDownY = 0;
   obj.mouseDownX=0;
   mouseDown = false;
   IsTdArea=0;
  }
  else
  {
   mouseDown = false;
   IsTdArea=0;
  }
 }
 
 function MouseOverTD(objchild)
 {
  var objTD = objchild;
  if(mouseDown == false)
  {
   //獲得TD所屬的Table
   var tbab = objTD.parentElement.parentElement.parentElement;
   //獲得Table的左邊座標值
   var tbOffSetLeft =tbab.offsetLeft;
  
   if(objTD.offsetLeft <=(event.x+1) && objTD.offsetLeft >= (event.x-1))
   {
    //調整左邊
    IsTdArea = 1;
    objTD.style.cursor ="w-resize";
    window.document.getElementById("Table1").style.cursor = "w-resize"; 
   }
   else if((objTD.offsetLeft+objTD.offsetWidth) <= (event.x+1) && (objTD.offsetLeft+objTD.offsetWidth) >= (event.x-1))
   {
    //調整右邊
    IsTdArea = 2;
    objTD.style.cursor ="w-resize";
   }   
   else if(objTD.offsetTop <= (event.y+1) && objTD.offsetTop >= (event.y-1))
   {
    //調整上邊
    IsTdArea = 3;
    objTD.style.cursor ="s-resize";
   }
   else if((objTD.offsetTop+objTD.offsetHeight) <= (event.y+1) && (objTD.offsetTop+objTD.offsetHeight) >= (event.y-1))
   {
    //調整下邊
    IsTdArea = 4;
    objTD.style.cursor ="s-resize";
   }
   else
   {
    IsTdArea = 0;
    objTD.style.cursor = "auto";
   }
  }    
 }

</script>

在後台.cs中以下事件中寫如下代碼:

 private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
   for(int i = 0; i < 3;i ++)
   {
    e.Item.Cells[i].Attributes.Add("onmouseover","MouseOverTD(this)");
    e.Item.Cells[i].Attributes.Add("onmousedown","MouseDown(this);");
    e.Item.Cells[i].Attributes.Add("onmousemove","MouseMove(this);");
    e.Item.Cells[i].Attributes.Add("onmouseup","MouseUp(this);");
   }
  }

OK執行一下,滑鼠拖動DataGrid的列試試



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。