1 Answer, 1 is accepted
0
Accepted
Princy
Top achievements
Rank 2
answered on 07 Aug 2012, 12:36 PM
Hi Sigma,
Try the following code snippet to achieve your scenario.
ASPX:
JS:
C#:
please take a look into this for more information.
Regards,
Princy
Try the following code snippet to achieve your scenario.
ASPX:
<
telerik:RadAjaxManager
runat
=
"server"
ID
=
"RadAjaxManager1"
OnAjaxRequest
=
"RadAjaxManager1_AjaxRequest"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadAjaxManager1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadListBox1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadOrgChart1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadOrgChart1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadOrgChart1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadAjaxLoadingPanel
runat
=
"server"
ID
=
"RadAjaxLoadingPanel1"
Skin
=
"Default"
>
</
telerik:RadAjaxLoadingPanel
>
<
asp:HiddenField
runat
=
"server"
ID
=
"SessionID"
/>
<
div
class
=
"newEmployees"
>
<
telerik:RadListBox
ID
=
"RadListBox1"
runat
=
"server"
Width
=
"200px"
Height
=
"225px"
OnClientDragging
=
"OnClientDragging"
EnableDragAndDrop
=
"true"
OnClientDropping
=
"OnClientDropping"
DataTextField
=
"Name"
DataValueField
=
"ImageUrl"
>
<
ItemTemplate
>
<
img
class
=
"product-image"
width
=
"30"
height
=
"37"
src='<%# DataBinder.Eval(Container, "Value")%>' alt="product image" />
<
span
class
=
"product-title"
><%# DataBinder.Eval(Container, "Text")%></
span
>
</
ItemTemplate
>
<
HeaderTemplate
>
<
span
>Employees Transfer List</
span
>
</
HeaderTemplate
>
</
telerik:RadListBox
>
</
div
>
<
div
class
=
"organizedEmployees"
>
<
telerik:RadOrgChart
ID
=
"RadOrgChart1"
runat
=
"server"
EnableDragAndDrop
=
"true"
GroupColumnCount
=
"2"
>
<
ItemTemplate
>
<
span
class
=
"pseudoImage"
style
=
"background-image: url('<%# DataBinder.Eval(Container, "
ImageUrl") %>')"> </
span
> <
strong
>
<%# DataBinder.Eval(Container, "Text") %></
strong
>
<
input
type
=
"button"
class
=
"rocRemoveItemButton"
value
=
""
/>
</
ItemTemplate
>
</
telerik:RadOrgChart
>
</
div
>
<
asp:SqlDataSource
ID
=
"ItemsDataSource"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:DragAndDropOrgChart %>" SelectCommand="SELECT * FROM [GroupItems]"></
asp:SqlDataSource
>
<
asp:SqlDataSource
ID
=
"NodesDataSource"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:DragAndDropOrgChart %>" SelectCommand="SELECT * FROM [Nodes]"></
asp:SqlDataSource
>
<
asp:SqlDataSource
ID
=
"ListBoxItems"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:DragAndDropOrgChart %>" SelectCommand="SELECT * FROM [ListBoxItems]"></
asp:SqlDataSource
>
</
div
>
JS:
<script type=
"text/javascript"
>
var
dropClue;
var
noDropClue;
var
$ = $telerik.$;
function
pageLoad() {
dropClue = $(
".dropClue"
)[0];
noDropClue = $(
".noDropClue"
)[0];
$(
".rocRemoveItemButton"
).click(
function
myfunction(e) {
removePerson(e);
})
$(document).mouseup(
function
() {
dropClue.style.display =
"none"
;
noDropClue.style.display =
"none"
;
});
}
function
removePerson(e) {
var
orgChart = $find(
"<%= RadOrgChart1.ClientID %>"
);
var
index = orgChart._extractGroupItemFromDomElement(e.target).get_index();
var
hierarchicalIndex = orgChart._extractNodeFromDomElement(e.target)._getHierarchicalIndex();
$find(
"<%= RadAjaxManager1.ClientID %>"
).ajaxRequest(
"remove-"
+ index +
"-"
+ hierarchicalIndex);
}
function
OnClientDropping(sender, args) {
var
orgChart = $find(
"<%= RadOrgChart1.ClientID %>"
);
var
itemText = args.get_sourceItem().get_text().trim();
if
(args.get_htmlElement().className.indexOf(
"rocGroup"
) != -1 || $(args.get_htmlElement()).parents(
".rocGroup"
).length > 0) {
var
hierarchicalIndex = orgChart._extractNodeFromDomElement(args.get_htmlElement())._getHierarchicalIndex();
$find(
"<%= RadAjaxManager1.ClientID %>"
).ajaxRequest(
"drop-"
+ itemText +
"-"
+ hierarchicalIndex);
}
dropClue.style.display =
"none"
;
noDropClue.style.display =
"none"
;
}
function
OnClientDragging(sender, args) {
var
event = args.get_domEvent();
var
scrollOffset = $telerik.getScrollOffset(document.body,
true
);
var
top = (event.clientY + (window.pageYOffset || scrollOffset.y));
var
left = (event.clientX + (window.pageXOffset || scrollOffset.x));
if
(args.get_htmlElement().className.indexOf(
"rocGroup"
) != -1 || $(args.get_htmlElement()).parents(
".rocGroup"
).length > 0) {
noDropClue.style.display =
"none"
;
dropClue.style.top = top + 10 +
"px"
;
dropClue.style.left = left + 20 +
"px"
;
dropClue.style.display =
"block"
;
}
else
{
dropClue.style.display =
"none"
;
noDropClue.style.top = top + 10 +
"px"
;
noDropClue.style.left = left + 20 +
"px"
;
noDropClue.style.display =
"block"
;
}
}
</script>
C#:
private
DataTable teams;
private
DataTable employees;
private
DataTable initialeEmployees;
protected
override
void
OnInit(EventArgs e)
{
base
.OnInit(e);
}
protected
void
Page_Load(
object
sender, EventArgs e)
{
RadOrgChart1.NodeDrop +=
new
Telerik.Web.UI.OrgChartNodeDropEventHandler(RadOrgChart1_NodeDrop);
RadOrgChart1.GroupItemDrop +=
new
Telerik.Web.UI.OrgChartGroupItemDropEventHandler(RadOrgChart1_GroupItemDrop);
RadOrgChart1.GroupEnabledBinding.NodeBindingSettings.DataFieldID =
"TeamID"
;
RadOrgChart1.GroupEnabledBinding.NodeBindingSettings.DataFieldParentID =
"ReportsTo"
;
RadOrgChart1.RenderedFields.NodeFields.Add(
new
Telerik.Web.UI.OrgChartRenderedField() { DataField =
"TeamNames"
});
RadOrgChart1.GroupEnabledBinding.NodeBindingSettings.DataSource = NodesDataSource;
RadOrgChart1.GroupEnabledBinding.GroupItemBindingSettings.DataFieldID =
"EmployeeID"
;
RadOrgChart1.GroupEnabledBinding.GroupItemBindingSettings.DataFieldNodeID =
"TeamID"
;
RadOrgChart1.GroupEnabledBinding.GroupItemBindingSettings.DataTextField =
"Name"
;
RadOrgChart1.GroupEnabledBinding.GroupItemBindingSettings.DataImageUrlField =
"ImageUrl"
;
RadOrgChart1.GroupEnabledBinding.GroupItemBindingSettings.DataSource = ItemsDataSource;
RadOrgChart1.DataBind();
RadListBox1.DataSource = ListBoxItems;
RadListBox1.DataBind();
RadListBox1.SortItems();
}
void
RadOrgChart1_GroupItemDrop(
object
sender, Telerik.Web.UI.OrgChartGroupItemDropEventArguments e)
{
using
(SqlConnection con =
new
SqlConnection(ConfigurationManager.ConnectionStrings[
"DragAndDropOrgChart"
].ConnectionString))
{
string
updateString = @
"UPDATE GroupItems SET TeamID = @TeamID WHERE [EmployeeID]="
+ e.SourceGroupItem.ID;
using
(SqlCommand cmd =
new
SqlCommand(updateString, con))
{
cmd.Parameters.Add(
new
SqlParameter(
"@TeamID"
, e.DestinationNode.ID));
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
}
}
RadOrgChart1.DataBind();
}
void
RadOrgChart1_NodeDrop(
object
sender, Telerik.Web.UI.OrgChartNodeDropEventArguments e)
{
using
(SqlConnection con =
new
SqlConnection(ConfigurationManager.ConnectionStrings[
"DragAndDropOrgChart"
].ConnectionString))
{
string
updateString = @
"UPDATE Nodes SET ReportsTo = @ReportsTo WHERE [TeamID]="
+ e.SourceNode.ID;
using
(SqlCommand cmd =
new
SqlCommand(updateString, con))
{
cmd.Parameters.Add(
new
SqlParameter(
"@ReportsTo"
, e.DestinationNode.ID));
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
}
}
RadOrgChart1.DataBind();
}
protected
void
RadAjaxManager1_AjaxRequest(
object
sender, AjaxRequestEventArgs e)
{
char
[] seps = {
'-'
};
string
[] textAndIds = e.Argument.Split(seps, StringSplitOptions.None);
char
[] sep = {
':'
};
string
[] stringIds = textAndIds[2].Split(sep, StringSplitOptions.RemoveEmptyEntries);
int
[] ids =
new
int
[stringIds.Length];
for
(
int
i = 0; i < stringIds.Length; i++)
{
ids[i] = Int32.Parse(stringIds[i]);
}
if
(textAndIds[0] ==
"drop"
)
{
string
newText = textAndIds[1];
OrgChartNode node = (OrgChartNode)RadOrgChart1.GetNodeByHierarchicalIndex(ids);
string
imageUrl =
""
;
foreach
(RadListBoxItem item
in
RadListBox1.Items)
{
if
(item.Text==newText)
{
imageUrl = item.Value;
}
}
using
(SqlConnection con =
new
SqlConnection(ConfigurationManager.ConnectionStrings[
"DragAndDropOrgChart"
].ConnectionString))
{
string
deleteString = @
"DELETE FROM [ListBoxItems] WHERE [Name] = @Name"
;
using
(SqlCommand cmd =
new
SqlCommand(deleteString, con))
{
cmd.Parameters.Add(
new
SqlParameter(
"@Name"
, newText));
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
}
}
using
(SqlConnection con =
new
SqlConnection(ConfigurationManager.ConnectionStrings[
"DragAndDropOrgChart"
].ConnectionString))
{
string
insertString = @
"INSERT INTO [GroupItems] (TeamID, Name, ImageUrl) values (@TeamID, @Name, @ImageUrl)"
;
using
(SqlCommand cmd =
new
SqlCommand(insertString, con))
{
cmd.Parameters.Add(
new
SqlParameter(
"@TeamID"
, node.ID));
cmd.Parameters.Add(
new
SqlParameter(
"@Name"
, newText));
cmd.Parameters.Add(
new
SqlParameter(
"@ImageUrl"
, imageUrl));
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
}
}
}
else
if
(textAndIds[0] ==
"remove"
)
{
int
groupIndex = Int32.Parse(textAndIds[1]);
OrgChartNode node = (OrgChartNode)RadOrgChart1.GetNodeByHierarchicalIndex(ids);
OrgChartGroupItem groupItem = node.GroupItems[groupIndex];
using
(SqlConnection con =
new
SqlConnection(ConfigurationManager.ConnectionStrings[
"DragAndDropOrgChart"
].ConnectionString))
{
string
deleteString = @
"DELETE FROM [GroupItems] WHERE [Name] = @Name"
;
using
(SqlCommand cmd =
new
SqlCommand(deleteString, con))
{
cmd.Parameters.Add(
new
SqlParameter(
"@Name"
, groupItem.Text));
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
}
}
using
(SqlConnection con =
new
SqlConnection(ConfigurationManager.ConnectionStrings[
"DragAndDropOrgChart"
].ConnectionString))
{
string
insertString = @
"INSERT INTO [ListBoxItems] (Name, ImageUrl) values ( @Name, @ImageUrl)"
;
using
(SqlCommand cmd =
new
SqlCommand(insertString, con))
{
cmd.Parameters.Add(
new
SqlParameter(
"@Name"
, groupItem.Text));
cmd.Parameters.Add(
new
SqlParameter(
"@ImageUrl"
, groupItem.ImageUrl));
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
}
}
}
Session[SessionID.Value +
"EmployeesGroupEnabledBindingCS"
] = employees;
Session[SessionID.Value +
"InitialEmployees"
] = initialeEmployees;
RadOrgChart1.DataBind();
RadListBox1.DataBind();
RadListBox1.SortItems();
}
please take a look into this for more information.
Regards,
Princy