2012-05-30 15 views
6

Używam VS2005 dla vb.net. Dostaję błąd kompilacji poniżej instrukcji. Jak to naprawić?"Pole" nie jest członkiem "System.Data.DataRow"

For Each rw As DataRow In data.Rows 
     For Each dc As DataColumn In stringColumns 
      rw.Field(Of String)(dc).Replace("_x00D_", "") //Error showing here 
     Next 
    Next 

Odpowiedz

8

Aktualizacja 2: Up-głosowania drugi bardziej bezpośredni/jednoznacznej odpowiedzi :-)


Aktualizacja: natomiast nadal stosuje się następujący, nie jestDataRow.Field dostarczone przez klasa DataRowExtensions; upewnij się, że jest odniesiony.


Ponieważ nie ma element zwany Field zdefiniowanego powyżej typu DataRow ... chyba specjalny Item nieruchomość została przeznaczona zamiast?

Uwaga w przykładzie, w którym jest używana jako indeksator (row("Name")). Schludnie, co?

(też coś powinno być zrobione z wyniku z Replace jako ciągi są niezmienne w .NET.)

Szczęśliwy kodowania.

+1

1+ Twój pierwszy post jest poprawna, ponieważ PO użyciu .NET 2.0 – Damith

14

Dodaj numer referencyjny do System.Data.DataSetExtensions.dll, a następnie twój kod będzie działał. Field jest metodą rozszerzenia, do której należy dodać odwołanie, w przeciwnym razie nie będzie działać.

VS 2005 z .net 2.0?

to nie można dodać odniesienia do tej biblioteki DLL. Aby korzystać z tych metod rozszerzeń, musisz kierować się na .net 3.5 lub wyższy.

2

Ten błąd pojawi się również, jeśli nie rzucisz bezpośrednio danymi DataRow. (Oryginalny plakat robi to prawidłowo.)

Użyj tego:

For Each rw As DataRow In data.Rows 

Nie tym:

For Each rw In data.Rows 
Powiązane problemy