как перетащить строку gridview из одной сетки в другую - PullRequest
1 голос
/ 30 августа 2011

У меня есть сетка с рядами. Мне бы хотелось, чтобы пользователь мог захватить строку и переместить ее в одно из нескольких других видов сетки в winform. Как я могу сделать это? Я не знаком с тем, как реализовать перетаскивание здесь.

Какие-нибудь хорошие учебники по этому типу перетаскивания? Спасибо за вашу помощь.

ОБНОВЛЕНИЕ: Хорошо, у меня есть следующий код (чтобы перетащить из gridPODetails в dataGridView1. Он еще не работает, но я ближе (теперь я получаю стрелку перетаскивания и знак плюс в месте назначения). 1005 *

 private void gridPODetails_MouseDown(object sender, MouseEventArgs e)
{
    DataGridView.HitTestInfo info = gridPODetails.HitTest(e.X, e.Y);

    if (info.RowIndex >= 0)
    {
        //DataRowView view = (DataRowView)gridPODetails.Rows[info.RowIndex].DataBoundItem;  //WRONG
        DataRow view = ((DataTable)(gridPODetails.DataSource)).Rows[info.RowIndex];  //RIGHT
        if (view != null)
        {
            gridPODetails.DoDragDrop(view, DragDropEffects.Copy);
        }
    }
}

private void dataGridView1_DragEnter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.Copy;
}

private void dataGridView1_DragDrop(object sender, DragEventArgs e)
{
    DataGridView grid = sender as DataGridView;
    DataTable table = grid.DataSource as DataTable;
    DataRow row = e.Data.GetData(typeof(DataRow)) as DataRow;

    if (row != null && table != null && row.Table != table)
    {
        table.ImportRow(row);
        row.Delete();
    }
}

решено: см. Мое редактирование выше. На самом деле я собирал всю информацию, а не только строку, которую хотел. Конечно, пункт назначения знает, как работать со строками, а не со всеми таблицами. Теперь это работает!

1 Ответ

1 голос
/ 30 августа 2011

Я нашел это в поиске Bing . Похоже, именно то, что вы ищете.

http://tv.devexpress.com/Content/XtraGrid/XtraGridDragRowsBetweenGrids/XtraGridDragRowsBetweenGrids.pdf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...