2011-08-29 87 views
1

我有一个gridview的行。我希望用户能够抓取一行,并将其移动到winform上的其他几个gridview之一。我怎么能这样做呢?我不熟悉如何实现拖放。如何将gridview行从一个网格拖到另一个网格

这种拖放有什么好的教程?谢谢你的帮助。我有下面的代码(从gridPODetails拖到dataGridView1,它还没有工作,但我更近了(现在我得到了拖动箭头和加号在目的地)我错过了什么?

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(); 
    } 
} 

解决:见上面我的编辑我其实是抓住了整个数据表,不只是我想行当然目的只有知道如何与行,而不是整个表格现在,它的工作环境和

+0

你的意思是DataGridView? –

+0

@Charles - 是的,我不确定这可能意味着什么? – MAW74656

+0

删除了我的答案。有问题的网格是DevExpress网格。这不是标准的DataGridView。我很遗憾浪费你的时间。 – David

回答

1
+0

- 这看起来很完美,我会尝试使用,并让你知道它是如何去的。您不认为视频可以在线获取? – MAW74656

+0

我不这么认为,但我发现印刷的文章容易遵循。我必须感谢你的提问。自从我试图弄清楚如何做到这一点以来,这是一个很长的时间,我放弃了这一点,不值得付出努力。 (当时我是一个相对较新的开发人员。)现在我发现这篇文章,它比我在学习.NET 1.0时容易得多。 – David

+0

- 这个代码指的是内置的.NET gridview,还是devexpress的自定义控件? – MAW74656

相关问题