2017-11-28 12 views
1

검색 사용자 버튼 버튼을 선택하면 모달 팝업 익스텐더가 표시되고 사용자가 모든 직원을 검색 할 수 있습니다. 값을 선택하면 선택한 값이 상위 폼에 전달되어야합니다. 또 다른 gridview.DataView를 DataTable로 변환

이제 dataview를 datatable로 변환하는 코드가 있습니다. 디버깅 할 때 인덱스의 값이 (idx)로 전달되지 않습니다.

Dim RowIndex As Integer = gvUser.EditIndex 
    Dim dt As New DataTable 
    dt = TryCast(Session("dbCache_User"), DataView).Table.Clone 

    Dim dv As New DataView(dt, "", "USR_IDNTY", DataViewRowState.OriginalRows) 
    Dim s As String = TryCast(gvUser.Rows(RowIndex).FindControl("lblUSR_IDNTY"), Label).Text 
    Dim idx As Integer = dv.Find(s) 

    dv(idx)("USR_ID") = row.Cells(1).Text 
    dv(idx)("NAME") = row.Cells(2).Text 

    gvUser.DataSource = dv 
    gvUser.DataBind() 

디버그를하려고 할 때. 인덱스 4로 한 행을 검색하려고합니다. (s)의 값은 4이지만 (idx)로 전달할 때는 -1입니다.

값을 찾아야합니다.

답변

0

관련 문서를 읽지 않았을 수 있습니다.

클론 원래의 DataTable 같은 구조를 갖는 신규의 DataTable을 생성하지만, (새로운 DataTable의 모든 데이터 행을 포함하지 않음)의 데이터를 복사하지 않는다 : 이것은 DataTable.Clone 방법에 대한 설명서에서이다. 구조와 데이터를 새 DataTable에 복사하려면 복사를 사용하십시오. dv 만약

dt의 전망과 dt는 물론 Find 수익을 행이없는 -1. 그 문서를 읽지 않고도 왜 DataTable이 비어 있다고 픽업하지 않았습니까? 그것은 당신이 확인해야 할 첫 번째 것 중 하나입니다.

+0

나는 여기에서 새로운데 이미 사본을 사용하고 있으며 이제는 0을 반환합니다. – Yinah

+0

-1은 일치하지 않음을 의미합니다. 다른 것은 해당 색인에서 일치하는 것이 발견되었음을 의미합니다. 'Find'가 0을 반환하면 첫 번째 행에서 일치가 발견되었음을 의미합니다. 그것이 다른 행이어야한다고 생각한다면 틀린 것입니다. 당신의 기대가 잘못되었거나 당신이 뭔가 잘못하고 있습니다. 우리는 당신의 데이터가 없기 때문에 우리는 그것을 도울 수 없습니다. – jmcilhinney

+0

그래서 이제는 데이터가 일치하고 전달되었지만 데이터 예외가 처리되지 않았습니다. dv (idx) ("NAME") = row.Cells (2). 텍스트 – Yinah