private void radGridView1_RowPaint(object sender, GridViewRowPaintEventArgs e) { if (e.Row is GridDataRowElement) { GridDataRowElement rowElement = (GridDataRowElement)e.Row; int startIndex = (int)e.Row.RowInfo.Cells["StartCell"].Value; int endIndex = (int)e.Row.RowInfo.Cells["EndCell"].Value; GridDataCellElement startCell = GetCell(e.Row, startIndex); GridDataCellElement endCell = GetCell(e.Row, endIndex); if (startCell != null || endCell != null) { int left = startCell == null ? rowElement.ScrollableColumns.BoundingRectangle.Left - 10 : startCell.ControlBoundingRectangle.Left; int right = endCell == null ? rowElement.ScrollableColumns.BoundingRectangle.Right + 10 : endCell.ControlBoundingRectangle.Right; e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; Region clipRegion = e.Graphics.Clip; e.Graphics.SetClip(rowElement.ScrollableColumns.BoundingRectangle); int randomColor = (int)e.Row.RowInfo.Cells["Color"].Value; using (RoundRectShape shape = new RoundRectShape(5)) using (GraphicsPath path = shape.CreatePath(new RectangleF(left + 5, 5, (right - left) - 10, e.Row.Size.Height - 10))) using (Brush brush = new SolidBrush(fills[randomColor])) using (Pen pen = new Pen(borders[randomColor], 2)) { e.Graphics.FillPath(brush, path); e.Graphics.DrawPath(pen, path); } e.Graphics.Clip = clipRegion; } } }
private void dragDropService_PreviewDragDrop(object sender, RadDropEventArgs e) { SnapshotDragItem dragInstance = e.DragInstance as SnapshotDragItem; if (dragInstance == null) { return; } RadItem dropTarget = e.HitTarget as RadItem; RadGridView targetGrid = dropTarget.ElementTree.Control as RadGridView; if (targetGrid == null) { return; } RadGridView dragGrid = dragInstance.Item.ElementTree.Control as RadGridView; if (targetGrid != dragGrid) { e.Handled = true; CustomGridBehavior behavior = (CustomGridBehavior)dragGrid.GridBehavior; GridDataRowElement dropTargetRow = dropTarget as GridDataRowElement; int index = dropTargetRow != null?this.GetTargetRowIndex(dropTargetRow, e.DropLocation) : targetGrid.RowCount; this.MoveRows(targetGrid, dragGrid, behavior.SelectedRows, index); } }
//initiate the move of selected row private void svc_PreviewDragDrop(object sender, RadDropEventArgs e) { GridDataRowElement rowElement = e.DragInstance as GridDataRowElement; if (rowElement == null) { return; } e.Handled = true; RadItem dropTarget = e.HitTarget as RadItem; RadGridView targetGrid = dropTarget.ElementTree.Control as RadGridView; if (targetGrid == null) { return; } var dragGrid = rowElement.ElementTree.Control as RadGridView; if (targetGrid == dragGrid) { e.Handled = true; GridDataRowElement dropTargetRow = dropTarget as GridDataRowElement; int index = dropTargetRow != null?this.GetTargetRowIndex(dropTargetRow, e.DropLocation) : targetGrid.RowCount; GridViewRowInfo rowToDrag = dragGrid.SelectedRows[0]; this.MoveRows(dragGrid, rowToDrag, index); } }
private void dragDropService_PreviewDragDrop(object sender, RadDropEventArgs e) { GridDataRowElement rowElement = e.DragInstance as GridDataRowElement; if (rowElement == null) { return; } string sourceText = rowElement.RowInfo.Cells[0].Value.ToString(); TreeNodeElement targetNodeElement = e.HitTarget as TreeNodeElement; if (targetNodeElement != null) { RadTreeViewElement treeViewElement = targetNodeElement.TreeViewElement; RadTreeNode targetNode = targetNodeElement.Data; DropPosition dropPosition = this.GetDropPosition(e.DropLocation, targetNodeElement); switch (dropPosition) { case DropPosition.None: break; case DropPosition.BeforeNode: radGridView1.Rows.Remove(rowElement.RowInfo); RadTreeNodeCollection nodes = targetNode.Parent == null ? treeViewElement.Nodes : targetNode.Parent.Nodes; nodes.Insert(targetNode.Index, new RadTreeNode(sourceText)); break; case DropPosition.AfterNode: radGridView1.Rows.Remove(rowElement.RowInfo); RadTreeNodeCollection nodes1 = targetNode.Parent == null ? treeViewElement.Nodes : targetNode.Parent.Nodes; int targetIndex = targetNodeElement.Data.Index <= treeViewElement.Nodes.Count - 1 ? (targetNodeElement.Data.Index + 1) : treeViewElement.Nodes.Count - 1; nodes1.Insert(targetIndex, new RadTreeNode(sourceText)); break; case DropPosition.AsChildNode: radGridView1.Rows.Remove(rowElement.RowInfo); targetNode.Nodes.Add(new RadTreeNode(sourceText)); break; } } RadTreeViewElement treeElement = e.HitTarget as RadTreeViewElement; if (treeElement != null) { radGridView1.Rows.Remove(rowElement.RowInfo); radTreeView1.Nodes.Add(new RadTreeNode(sourceText)); } }
private int GetTargetRowIndex(GridDataRowElement row, Point dropLocation) { int halfHeight = row.Size.Height / 2; int index = row.RowInfo.Index; if (dropLocation.Y > halfHeight) { index++; } return(index); }
protected override bool OnMouseDownLeft(MouseEventArgs e) { GridDataRowElement row = this.GetRowAtPoint(e.Location) as GridDataRowElement; if (row != null) { RadGridViewDragDropService svc = this.GridViewElement.GetService <RadGridViewDragDropService>(); svc.AllowAutoScrollColumnsWhileDragging = false; svc.AllowAutoScrollRowsWhileDragging = false; svc.Start(row); } return(base.OnMouseDownLeft(e)); }
/// <summary> /// The get target row index. /// </summary> /// <param name="row"> /// The row. /// </param> /// <param name="dropLocation"> /// The drop location. /// </param> /// <returns> /// The get target row index. /// </returns> private int GetTargetRowIndex(GridDataRowElement row, Point dropLocation) { int halfHeight = row.Size.Height / 2; int index = row.RowInfo.Index; if (dropLocation.Y > halfHeight) { index++; } return index; }
//gather drag/source grid and target/destination information and initiate the move of selected rows private void svc_PreviewDragDrop(object sender, RadDropEventArgs e) { var rowElement = e.DragInstance as GridDataRowElement; if (rowElement == null) { return; } e.Handled = true; var dropTarget = e.HitTarget as RadItem; var targetGrid = dropTarget.ElementTree.Control as RadGridView; if (targetGrid == null) { return; } var dragGrid = rowElement.ElementTree.Control as RadGridView; if (targetGrid != dragGrid) { e.Handled = true; //append dragged rows to the end of the target grid //int index = targetGrid.RowCount; GridDataRowElement dropTargetRow = dropTarget as GridDataRowElement; int index = dropTargetRow != null?this.GetTargetRowIndex(dropTargetRow, e.DropLocation) : targetGrid.RowCount; //Grab every selected row from the source grid, including the current row List <GridViewRowInfo> rows = dragGrid.SelectedRows.ToList <GridViewRowInfo>(); if (dragGrid.CurrentRow != null) { GridViewRowInfo row = dragGrid.CurrentRow; if (!rows.Contains(row)) { rows.Add(row); } } this.MoveRows(targetGrid, dragGrid, rows, index); } else { e.Handled = true; //append dragged rows to the end of the target grid //int index = targetGrid.RowCount; GridDataRowElement dropTargetRow = dropTarget as GridDataRowElement; int index = dropTargetRow != null?this.GetTargetRowIndex(dropTargetRow, e.DropLocation) : targetGrid.RowCount; //Grab every selected row from the source grid, including the current row List <GridViewRowInfo> rows = dragGrid.SelectedRows.ToList <GridViewRowInfo>(); if (dragGrid.CurrentRow != null) { GridViewRowInfo row = dragGrid.CurrentRow; if (!rows.Contains(row)) { rows.Add(row); } } this.MoveRows(targetGrid, dragGrid, rows, index); } }