0

どうすればいいのかわかりません。現在、最初の gridviewには、メンバーがアクセスできるグループのリストがあります。2 番目のgridviewは、すべてのタイプのグループのリストを含むテーブルにバインドされ、最初の gridview にそれを追加し、そのグループをメンバーに追加するテーブルを更新する [追加] ボタンがあります。

これは私がやろうとしていることです:

行の [追加] ボタン (2 番目のグリッドビュー) をクリックすると、(現在のように) 最初の行に追加されますが、2 番目のグリッドビューからも消えたいと思います。したがって、基本的に、グループは両方ではなく、最初のグリッドビューまたは 2 番目のグリッドビューのいずれかでのみ表示する必要があります。私が抱えている問題は、明らかにテーブルにすべての可能なグループが含まれているため、テーブルを変更したくないということです。助言がありますか?

4

2 に答える 2

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
于 2010-10-16T00:24:05.170 に答える
0

データベース側ですべての作業を行います。最初のデータ ソースは次のとおりです。

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

2番目のデータソースは次のようになります

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

次に、追加ボタンがテーブルに適切な行を挿入し、両方のグリッドを再クエリします。

于 2010-09-24T21:11:27.060 に答える