Переместить строку из одного вида сетки в другой - PullRequest
0 голосов
/ 24 сентября 2010

Я не уверен, как это сделать.В настоящее время в первом сеточном представлении находится список групп, к которым имеет доступ участник. второй вид сетки привязан к таблице, содержащей список всех типов групп, и имеет кнопку «Добавить», которая добавляет его к первому виду сетки и обновляет таблицу, добавляя эту группу к члену.

Это то, что я пытаюсь сделать:

Когда нажата кнопка «Добавить» (во втором виде сетки) для строки, она будет добавлена ​​к первой (как в настоящее время)), но я также хотел бы, чтобы это исчезло из второго вида сетки.Таким образом, в основном, группа должна быть видна только в первом или во втором виде сетки, но не в обоих.У меня проблема в том, что я не хочу изменять таблицу, потому что, очевидно, таблица содержит все возможные группы.Есть предложения?

Ответы [ 2 ]

0 голосов
/ 16 октября 2010

Вы можете просто внести изменения в набор данных, затем .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
0 голосов
/ 25 сентября 2010

Я бы сделал всю работу на стороне базы данных. Источник данных для первого:

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

Затем ваша кнопка добавления вставляет соответствующую строку в таблицу и запрашивает обе сетки.

...