Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        //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);
            }
        }
Ejemplo n.º 4
0
        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));
            }
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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;
        }
Ejemplo n.º 8
0
        //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);
            }
        }