2013-06-06 2 views
0

Я пытаюсь сохранить некоторые строки в dataview для некоторых операций, которые будут выполняться после того, как я получу отфильтрованные строки, но проблема возникает каждый раз при запуске кода, dataview обновляется до последнего фильтра применяется. Вот код snippest.DataView Обновляйте себя до нового строкового фильтра

If dsEmp.Tables.Count > 0 Then 
    dvEmp = dsEmp.Tables(0).DefaultView 
    dvEmp.RowFilter = "IDENTIFICATION_CODE = '" & IDENTIFICATION_CODE & "' and EMPLOYEE_DESC = 'Employment1'" 
    Dim dv1 As DataView = dvEmp 
    dvEmp.RowFilter = "" 
    If dsEmp.Tables(0).Rows.Count > 1 Then 
     dvEmp2 = New DataView 
     dvEmp2 = dsEmp.Tables(0).DefaultView 
     dvEmp2.RowFilter = "IDENTIFICATION_CODE = '" & IDENTIFICATION_CODE & "' and EMPLOYEE_DESC = 'Employment2'" 
     Dim dv2 As DataView = dvEmp2 
     dvEmp2.RowFilter = "" 
    End If 
    If dsEmp.Tables(0).Rows.Count > 2 Then 
     dvEmpPrevious = New DataView 
     dvEmpPrevious = dsEmp.Tables(0).DefaultView 
     dvEmpPrevious.RowFilter = "IDENTIFICATION_CODE = '" & IDENTIFICATION_CODE & "' and EMPLOYEE_DESC = 'Employment3'" 
     Dim dv3 As DataView = dvEmpPrevious 
     dvEmpPrevious.RowFilter = "" 
    End If 
End If 

, но когда я проверяю значение dv1, после второго фильтра он имеет в нем разные значения.

Может ли кто-нибудь дать какое-либо решение. Спасибо

ответ

0

Вы просто меняете имя переменных, но каждый приведенный выше DataView все еще ссылается на тот же DataView (DefaultView таблицы). Поэтому, когда вы перезапускаете RowFilter, вы также применяете это изменение к DefaultView.

Если вы хотите иметь различные представления с различными фильтрами, то вам нужно создать DataView передавая источник DataTable

dvEmp = new DataView(dsEmp.Tables(0)) 
dvEmp.RowFilter = "IDENTIFICATION_CODE = '" & IDENTIFICATION_CODE & "' and EMPLOYEE_DESC = 'Employment1'" 

Теперь dvEmp не больше ссылок на DefaultView в DataTable и он должен поддерживать правильный RowFilter применяется

Конечно, вы должны использовать отфильтрованный DataView для проверки количества записей, присутствующих в DataView, после фильтра, а не с DataTable.
Объект DataTable содержит всегда одинаковое количество записей

If dvEmp.Count > 1 Then 
    ..... 
+0

Спасибо Steve за ответ и редактировать:) ... Тем не менее, я только что получил решение, и это было, чтобы сохранить каждую строку я отфильтровывать в таблицу данных и используйте эту таблицу данных вместо этого datarow. Я знаю, что он не оптимизирован, но его работа;) –

 Смежные вопросы

  • Нет связанных вопросов^_^