Laden...

SELECT-COMMAND per DropDownList den Wert NULL zuweisen

Erstellt von Maximus vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.645 Views
Thema geschlossen
M
Maximus Themenstarter:in
97 Beiträge seit 2006
vor 17 Jahren
SELECT-COMMAND per DropDownList den Wert NULL zuweisen

Hallo,

ich habe folgendes Problem:

Ich habe folgende DropDownList (ddlFilterSpieltag):

Text | Wert
Alle Spiele anzeigen | ????-> HIER MUSS NULL ÜBERGEBEN WERDEN

  1. Spieltag | 1
  2. Spieltag | 2

Ein Gridview wird mittels einer SQLDataSource (sdsSpiele) gefüllt, wobei der Wert aus der DropDownList (ddFilterSpieltag) als Filter agiert:

SELECT...
FROM....
WHERE ( filter_spieltag IS NULL OR filter_spieltag = @filter_spieltag)
<asp:SqlDataSource ID="sdsSpiele" runat="server" ConnectionString="<%$ ConnectionStrings:BundesligaVerbindungsString %>"  SelectCommandType="StoredProcedure" SelectCommand="ErmittelSpiele">
<SelectParameters>
   <asp:ControlParameter ControlID="ddl_FilterSpieltage" Name="filter_spieltag" PropertyName="SelectedValue" Type="Int32" DefaultValue="1" />
</SelectParameters>
</asp:SqlDataSource>

PROBLEM: Damit kein Filter berücksichtigt wird muss dem SelectParamter der Wert NULL übergeben werden.
Alles funktioniert wenn ich einen Wert (1,2,3...) übergebe, wenn ich nichts übergeben kommt die Fehlermedlung: "Die Eingabezeichenfolge hat das falsche Format.".
Auch Versuche wie

ddlFilterSpieltag.Items[0].Vlaue = "NULL" 

oder ähnliches bringt mich nicht weiter.
Wo liegt mein Fehler?
Im voraus danke für Eure Hilfe.

Gruß
Maximus

Die Schnecke kann Dir mehr über den Weg erzählen als der Hase.

2.082 Beiträge seit 2005
vor 17 Jahren

Hallo Maximus,

versuchs mal mit:

ddlFilterSpieltag.Items[0].Value = DBNull.Value;

Ungetestet. Falls ers nicht nimmt probier einfach DBNull.Value.ToString()

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

M
Maximus Themenstarter:in
97 Beiträge seit 2006
vor 17 Jahren

Hallo,

richtig ist :

ddlFilterSpieltag.Items[0].Value = DBNull.Value.ToString();

Jetzt kommt keine Fehlermeldung mehr, dafür habe ich aber ein neues Problem:

Obwohl der Wert der Drop-Down-List, jetzt NULL ist, findet der SELECT-COMMAND keine passende Zeile.
Hier mal der SQL-PARAMETER:


ALTER PROCEDURE dbo.ErmittelSpiele
	
	(
		@filter_spieltag int = NULL,
		@filter_heimteam int = NULL,
		@filter_gastteam int = NULL
	)
	
AS
	        SELECT A.spiel_id, A.spieltag_id, B.mannschafts_name, C.mannschafts_name, D.spieltag_datum, D.spieltag_name, D.spieltag_id
	        FROM Spiele A, Mannschaften B, Mannschaften C, Spieltage D
	        WHERE A.mannschaft_a = B.mannschafts_id AND A.mannschaft_b = C.mannschafts_id AND A.spieltag_id = D.spieltag_id AND (@filter_spieltag IS NULL OR D.spieltag_id=@filter_spieltag) AND (@filter_heimteam IS NULL OR B.mannschafts_id=@filter_heimteam) AND (@filter_gastteam IS NULL OR C.mannschafts_id=@filter_gastteam);


Alle DefaultValues habe ich aus dem ControlParameter-Tag entfernt.
Ist es falsch den Datentyp auf "int" zusetzen?
Oder woran kann es sonst noch liegen?

Danke für Eure Hilfe.
Gruß
Maximus

Die Schnecke kann Dir mehr über den Weg erzählen als der Hase.

476 Beiträge seit 2004
vor 17 Jahren

hallo,

der Thread ist hier geschlossen und wird im Thread Datenbanken fortgesetzt.

-yellow

Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de

Thema geschlossen