2009-09-22 2 views
8

Utworzono mocno wpisany zestaw danych (MyDataSet) w mojej aplikacji .NET. Dla uproszczenia powiemy, że ma jedną DataTable (MyDataTable), z jedną kolumną (MyCol). MyCol ma właściwość DataType ustawioną na "System.Int32", a jej właściwość AllowDBNull jest ustawiona na "true".Jak mogę uwzględnić DBNull jako wartość w moim mocno wpisanym zestawie danych?

Chciałbym ręcznie utworzyć nowy wiersz, a następnie dodaj je do zbioru danych. Tworzę wiersz bez problemu, z czymś podobnym:

MyDataSet.MyDataTableRow myRow = MySimpleDataSet.MyDataTable.NewItemRow(); 

Dobrze. Jednak, gdy próbuję ustawić wartość DBNull:

myRow.MyCol = DBNull.Value; 

Powiedziano mi, że nie mogę zrobić ... że nie może oddać, że do wew. W pewnym sensie ma to sens, odkąd zdefiniowałem to jako int ... ale jak mogę tam zdobyć DBNull? Czy nie powinienem tam mieć DBNull? Czy nie jest to właściwość AllowDBNull?

Ja oczywiście brakuje czegoś fundemental. Czy ktoś może pomóc ci wyjaśnić, co to jest?

EDYCJA: Próbowałem również wprowadzić "int?" jako DataType, ale program Visual Studio zgłasza błąd po wprowadzeniu go, mówiąc, że "kolumna wymaga poprawnego DataType".

+0

To może pomóc: http://stackoverflow.com/questions/879095/nullable-int-column-in-dataset –

Odpowiedz

13

masz w klasie MyDataTableRow wygenerowany metodę o nazwie: SetMyColNull().

myRow.SetMyColNull(); 

można również zrobić:

myRow["MyCol"] = DBNull.Value; 

ponieważ myRow["MyCol"] jest typu object

EDIT (dodane przez pytań OP):

Istnieje również metoda odpowiednik wygenerowany do odczytu tej wartości z powrotem, IsMyColNull().

+1

Egad! Jak tęskniłem/nie wiem tego? Doskonały! Wielkie dzięki! – Beska

0

int nie przyjmuje wartości null, ale int? (wersja Inullable) ma. Myślę, że potrzebujesz tego typu danych.

+1

Niestety, to nie działa ...Próbowałem tego (powinienem wspomnieć o tym w pytaniu ... będę je edytować, aby to zrobić.) Kiedy to zrobię, wyskakuje okno, które narzeka, że ​​"Kolumna wymaga poprawnego DataType". – Beska

1

Istnieją dwie rzeczy.

Umożliwienie DBNull jest oddzielnym ustawieniem od bycia w stanie ustawić wartość DBNull.

Użyłem tylko interfejsu DataSet XSD do ustawienia tego ... ale musiałem nie tylko ustawić "AllowDBNull = true", ale musiałem również ustawić "NullValue = (null)". Pierwotnie "NullValue" było ustawione na "(Exception)". Oznaczało to, że zbiór danych akceptował bieng. .Fill() ed z wartością null, ale nie pozwalałby ręcznie ustawić wartości na null.

Nie jestem pewien, czy jest to problem, ale brzmi podobnie.

+0

Działa to tylko z ciągami ... –

1

po prostu przejdź do trybu projektanta w zestawie danych i kliknij prawym przyciskiem myszy pole, które ma być nieaktywne, i wybierz właściwości, w oknie właściwości, ustaw AllowDBNull na True i NullValue na (NULL); to działa dla mnie dobrze! Pozdrawiam!

+0

Działa to tylko dla ciągów ... –

Powiązane problemy