从一个网格视图移动到另一个网格视图

时间:2010-09-24 19:49:48

标签: vb.net gridview row transfer

我不知道该如何解决这个问题。目前,在第一个gridview 中,是成员有权访问的组列表。 第二个gridview 绑定到一个表,该表包含每种类型的组的列表,并有一个Add按钮,将其添加到第一个gridview并更新将该组添加到成员的表。

这就是我想要做的事情:

当单击一行的Add按钮(在第二个gridview中)时,它将被添加到第一个(就像它当前那样),但我也希望它从第二个gridview中消失。所以基本上,一组只能在第一个gridview或第二个中看到,而不是两者都可见。我遇到的问题是我不想修改表,因为显然表包含所有可能的组。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我会在数据库方面做所有的工作。第一个数据源是:

Select g.*
From membership m
  inner join groups g on m.groupid=g.groupid
Where m.userid = @userid

第二个数据源看起来像

Select g.*
From groups g
Where not exists 
  (Select 1 from membership m 
  Where m.GroupID=g.GroupID and m.userid = @userid

然后,您的添加按钮会在表格中插入相应的行并重新查询两个网格。

答案 1 :(得分:0)

您可以简单地对数据集进行更改,然后.AcceptChanges并重新绑定。这将确保数据在屏幕上更新,而不会实际将其推送到数据库。

伪示例:

Dim dt as Datatable = GetData1(strSQL.toString)
Dim dt2 as Datatable = GetData2(strSQL.toString)

Public Sub MoveRecord(ByVal dt1 as DataTable, ByVal dt2 as Datatable, ByVal index as Integer)

'Record being moved '
Dim dr as Datarow = dt.Rows(index)
dt2.Rows.Add(dr)
dt2.AcceptChanges
dt.Rows.RemoveAt(index)
dt.AcceptChanges

'Bind Gridview
 Perhaps store new changes in Viewstate,
 Cache, or Session for Paging, Sorting'
End Sub

当然,这假设网格具有相同的字段。如果他们不这样做,你必须:

Dim drN as DataRow - dt2.Rows.NewRow
'Assign rows from moving datarow to new datarow'
dt2.Rows.Add(drN)
dt2.AcceptChanges