我不知道该如何解决这个问题。目前,在第一个gridview 中,是成员有权访问的组列表。 第二个gridview 绑定到一个表,该表包含每种类型的组的列表,并有一个Add按钮,将其添加到第一个gridview并更新将该组添加到成员的表。
这就是我想要做的事情:
当单击一行的Add按钮(在第二个gridview中)时,它将被添加到第一个(就像它当前那样),但我也希望它从第二个gridview中消失。所以基本上,一组只能在第一个gridview或第二个中看到,而不是两者都可见。我遇到的问题是我不想修改表,因为显然表包含所有可能的组。有什么建议吗?
答案 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