Hey everyone,
It seems that the R.A.D TreeList currently doesn't have a row drag and drop operation. I have knocked up a demo of how to do it using simple form elements and jQuery. Feel free to use this until Telerik implement their own method.
Firstly, add this HTML anywhere on your page:
Next, add this CSS to the page:
Finally, you need to hook up your RadTreeList with the ItemCreated client event:
Hope this helps, or at least provides a starting point for you.
It seems that the R.A.D TreeList currently doesn't have a row drag and drop operation. I have knocked up a demo of how to do it using simple form elements and jQuery. Feel free to use this until Telerik implement their own method.
Firstly, add this HTML anywhere on your page:
<
div
id
=
'paddingBox'
>
<
div
id
=
'moveBox'
>
</
div
>
</
div
>
Next, add this CSS to the page:
<style type=
'text/css'
>
#moveBox {
position
:
fixed
;
background-color
: Blue;/*Or whatever*/
filter: alpha(opacity=
50
);
opacity:
0.5
;
-moz-opacity:
0.5
;
}
#paddingBox {
display
:
none
;
position
:
fixed
;
left
:
0
;
top
:
0
;
width
:
100%
;
background-color
: White;
height
:
100%
;
filter: alpha(opacity=
1
);
opacity:
0.01
;
-moz-opacity:
0.01
;
}
</style>
Finally, you need to hook up your RadTreeList with the ItemCreated client event:
function
RadTreeList1_ItemCreated(sender, args) {
var
item = args.get_item();
var
elem = item.get_element();
var
rowDrop =
function
(dropped, onto) {
/*Do something with the two rows here.*/
}
$(elem).mousedown(
function
(e) {
var
mde = e ? e : event;
if
(!e.srcElement.id.endsWith(
"ExpandCollapseButton"
)) {
var
items = sender.get_dataItems();
var
hoveredItem =
null
;
$(
"#paddingBox"
).show();
$(
"#moveBox"
).css({
left: mde.clientX - mde.offsetX,
top: mde.clientY - mde.offsetY,
width: elem.clientWidth, height: elem.clientHeight
});
$(document).mousemove(
function
(e) {
var
mme = e ? e : event;
$(
"#moveBox"
).css({
left: mme.clientX - mde.offsetX,
top: mme.clientY - mde.offsetY
});
for
(
var
i = 0; i < items.length; i++) {
var
delem = items[i].get_element();
if
(delem != elem) {
var
offset = $(delem).offset();
var
left = offset.left;
var
right = left + $(delem).width();
var
top = offset.top;
var
bottom = top + $(delem).height();
if
(mme.clientX > left && mme.clientX < right &&
mme.clientY > top && mme.clientY < bottom) {
$(delem).css({
"background-color"
:
"#29DC4F"
, /*Or whatever*/
"filter"
:
"alpha(opacity=50)"
,
"opacity"
:
"0.5"
});
hoveredItem = delem;
}
else
{
if
(hoveredItem == delem) {
hoveredItem =
null
;
}
$(delem).css({
"background-color"
:
""
,
"filter"
:
""
,
"opacity"
:
""
});
}
}
}
});
$(document).mouseup(
function
() {
$(
"#paddingBox"
).hide();
$(document).unbind(
"mousemove"
);
if
(hoveredItem) {
rowDrop(elem, hoveredItem);
}
});
}
});
}
Hope this helps, or at least provides a starting point for you.