2017-11-28 1 views
1

Ich habe ein Formular mit Suche Benutzer Button wenn ich die Schaltfläche die modale Popup-Extender wird angezeigt und Benutzer kann alle Mitarbeiter suchen, wenn Wert auswählen, sollte der ausgewählte Wert an das übergeordnete Formular mit übergeben ein weiteres Gridview.Umwandlung von DataView in DataTable

Jetzt habe ich einen Code, der Datenansicht in Datentabelle konvertieren. Beim Debuggen wird der Wert des Index (s) nicht an (idx) übergeben.

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() 

Wenn ich versuche zu debuggen. Ich versuche eine Zeile mit Index 4 zu suchen; der Wert von (s) ist 4, aber wenn er nach (idx) geht, ist es -1.

Ich muss den Wert s finden.

Antwort

0

Es scheint, als ob Sie die relevante Dokumentation nicht gelesen haben. Dies ist aus der Dokumentation der DataTable.Clone Methode:

Klon mit der gleichen Struktur wie das Original Datatable eine neue Datentabelle erstellt, aber kopiert keine Daten (die neue Datentabelle wird alle DataRows nicht enthalten). Verwenden Sie Kopieren, um sowohl die Struktur als auch die Daten in eine neue DataTable zu kopieren.

Wenn dv ist eine Ansicht von dt und dt enthält keine Zeilen dann natürlich Find -1 zurück. Auch ohne diese Dokumentation zu lesen, warum haben Sie nicht abgeholt, dass Ihre DataTable leer war? Das ist eines der ersten Dinge, die Sie überprüfen sollten.

+0

Ich bin neu hier, ich benutze bereits die Kopie und jetzt mein dv zurück 0. – Yinah

+0

-1 bedeutet keine Übereinstimmung. Alles andere bedeutet, dass bei diesem Index eine Übereinstimmung gefunden wurde. Wenn 'Find' 0 zurückgibt, bedeutet dies, dass in der ersten Zeile eine Übereinstimmung gefunden wurde. Wenn Sie denken, dass es eine andere Reihe sein sollte, liegen Sie falsch. Entweder sind deine Erwartungen falsch oder du machst etwas falsch. Wir können nicht helfen, weil wir Ihre Daten nicht haben. – jmcilhinney

+0

So jetzt habe ich Spiel und Weitergabe von Daten, aber Fehler "Daten Ausnahme wurde nicht behandelt" dv (idx) ("NAME") = row.Cells (2) .Text – Yinah