<
radControls:RadScriptBlock runat="server" ID="scriptBlock">
<script type="text/javascript">
function onRowDropping(sender, args)
{
if (sender.get_id() == "<%=grdFieldValueList.ClientID %>")
{
var node = args.get_destinationHtmlElement();
if(!isChildOf('<%=grdFieldValueList.ClientID %>', node) )
{
args.set_cancel(
true);
}
}
}
function isChildOf(parentId, element)
{
while(element)
{
if (element.id && element.id.indexOf(parentId) > -1)
{
return true;
}
element = element.parentNode;
}
return false;
}
</script>
<ClientSettings AllowRowsDragDrop=true >
<Selecting AllowRowSelect="True" EnableDragToSelectRows="true"/>
<ClientEvents OnRowDropping="onRowDropping" />
<Scrolling AllowScroll="true" UseStaticHeaders="true" />
</ClientSettings>
<MasterTableView DataKeyNames="FieldCode" GridLines="Both" BackColor="White">
<Columns>
<radControls:GridBoundColumn DataField="FieldCode"></radControls:GridBoundColumn>
<radControls:GridBoundColumn DataField="DisplayName"></radControls:GridBoundColumn>
</Columns>
</MasterTableView >
</radControls:RadGrid>
private static DWField GetFieldValue(IList<DWField> valuesToSearchIn, int FieldCode)
{
foreach (DWField fieldValue in valuesToSearchIn)
{
if (fieldValue.FieldCode == FieldCode)
{
return fieldValue;
}
}
return null;
}
protected void grdFieldValueList_RowDrop(object sender, GridDragDropEventArgs e)
{
if (e.DestDataItem != null && e.DestDataItem.OwnerGridID == grdFieldValueList.ClientID)
{
//reorder items in grid
IList<DWField> fieldValueList = (IList<DWField>)Session["FieldList"];
DWField tmpFieldValue = GetFieldValue(fieldValueList, (int)e.DestDataItem.GetDataKeyValue("FieldCode"));
int destinationIndex = fieldValueList.IndexOf(tmpFieldValue);
if (e.DropPosition == GridItemDropPosition.Above && e.DestDataItem.ItemIndex > e.DraggedItems[0].ItemIndex)
{
destinationIndex -= 1;
}
if (e.DropPosition == GridItemDropPosition.Below && e.DestDataItem.ItemIndex < e.DraggedItems[0].ItemIndex)
{
destinationIndex += 1;
}
List<DWField> ValuesToMove = new List<DWField>();
foreach (GridDataItem draggedItem in e.DraggedItems)
{
DWField tmpOrder = GetFieldValue(fieldValueList, (int)draggedItem.GetDataKeyValue("FieldCode"));
if (tmpOrder != null)
ValuesToMove.Add(tmpOrder);
}
foreach (DWField dwField in ValuesToMove)
{
fieldValueList.Remove(dwField);
fieldValueList.Insert(destinationIndex, dwField);
}
Session[
"FieldValueList"] = fieldValueList;
grdFieldValueList.DataSource = fieldValueList;
grdFieldValueList.DataBind();
//grdFieldValues.Rebind();
e.DestDataItem.Selected =
true;
}
}
The beta is available for download from your Telerik accounts --> Downloads (or Free Trials for the trial version) --> RadControls for WinForms: