Hallo,
ich habe folgendes Problem:
Ich habe folgende DropDownList (ddlFilterSpieltag):
Text | Wert
Alle Spiele anzeigen | ????-> HIER MUSS NULL ÜBERGEBEN WERDEN
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.
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
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.
Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).
Mein Blog: Yellow's Blog auf sqlgut.de