DataSource mit leerem Parameter

28/02/2009 - 23:37 von Lutz Elßner | Report spam
Ich habe eine SQL Prozedur und eine aspx Seite, die das Ergebnis anzeigen soll.
Der Parameter @p1 wirkt sich nicht auf das Ergebnis aus.

Wenn ich in der Parameter Deklaration den DefaultValue weg lasse oder
einen Empty-String eintrage, dann liefert die SqlDataSource keine Daten.

<asp:Parameter Name="p1" Type="String" />
<asp:Parameter DefaultValue="" Name="p1" Type="String" />


Wenn ich ein Leerzeichen oder sonst irgend einen String eintrage,
dann funktioniert die Ausgabe.

<asp:Parameter DefaultValue=" " Name="p1" Type="String" />


Bei einem leeren Parameter wird die Prozedur gar nicht erst aufgerufen.
Ich kann den Name der Prozedur sogar falsch schreiben und nichts passiert.

Wie ist denn dieses Feature zu erklàren, und wie ist es zu lösen?
Ich würde schon als Parameter gern Empty Strings übergeben dürfen, wo die Prozedur das erlaubt...

Lutz




CREATE PROCEDURE [dbo].[pInsertSession]
(
@p1 varchar(100)
)
AS
BEGIN

SELECT * FROM sys.tables

END



<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1"
EmptyDataText="keine Daten">
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="pInsertSession" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter DefaultValue="" Name="p1" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
02/03/2009 - 08:34 | Warnen spam
Hallo Lutz,

"Lutz Elßner" schrieb:

Wenn ich in der Parameter Deklaration den DefaultValue weg lasse oder
einen Empty-String eintrage, dann liefert die SqlDataSource keine Daten.



irgendwie scheinen die DataSource Controls leider wieder in Mode zu kommen.
Bitte mal http://www.karsan.de/ASPNETHandarbe...ource.aspx lesen.

Wenn ich ein Leerzeichen oder sonst irgend einen String eintrage,
dann funktioniert die Ausgabe.

<asp:Parameter DefaultValue=" " Name="p1" Type="String" />

Bei einem leeren Parameter wird die Prozedur gar nicht erst aufgerufen.
Ich kann den Name der Prozedur sogar falsch schreiben und nichts passiert.



<SqlDataSource ... CancelSelectOnNullParameter="False" />

Aber wie gesagt, schmeiß das DataSource Control weg und machs gleich
richtig.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen