2013-02-13 11 views
12

Ich habe Probleme beim Übergeben eines Nullwerts an eine gespeicherte Prozedur, z. Wenn in einem Dropdown-Feld keine Option ausgewählt ist, wie kann dies über die SQL-Datenquelle an die Datenbank übergeben werden.<asp: ControlParameter - übergeben Nullwert an DB über sqldatasource

Ich habe derzeit eine Reihe von Dropdown-Steuerelemente auf meiner Seite, die parameter Werte halten, um an eine gespeicherte Prozedur übergeben werden.

Wenn ich einige Werte aus diesen Steuerelementen auswähle, zeigt die Gridview die Ergebnisse an, die sie haben sollte, aber ich habe ein Problem, wenn keine Werte ausgewählt werden, wird ein Nullwert an den SP übergeben. Ich habe den SP überprüft und wenn ich ihn ausführe und Nullwerte übergebe, bekomme ich die richtigen Ergebnisse, also bin ich mit dem SP zufrieden. Ich habe

versucht
ConvertEmptyStringToNull="true" DefaultValue="" 

Einstellungen in dem Steuerparamater ohne Glück, und das die Drop-Down-Option „All“ einen Wert von „“ hat

Der Code für das SqlDataSource ist:

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:scConnString %>" 
        SelectCommand="spGetOrgTickets" SelectCommandType="StoredProcedure" CancelSelectOnNullParameter="false"> 
        <SelectParameters> 
         <asp:SessionParameter Name="org_id" Type="Int32" SessionField="org_id" DefaultValue="" ConvertEmptyStringToNull="false" /> 
         <asp:ControlParameter ControlID="drpPriority" Name="priority_id" PropertyName="SelectedValue" 
          Type="Int32" ConvertEmptyStringToNull="true" DefaultValue="" /> 
         <asp:ControlParameter ControlID="drpStatus" Name="status_id" PropertyName="SelectedValue" 
          Type="Int32" ConvertEmptyStringToNull="true" DefaultValue=""/> 
        </SelectParameters> 
       </asp:SqlDataSource> 

Einer der Dropdown ist:

      <asp:DropDownList Style="width: 100%" ID="drpStatus" runat="server" class="field select" 
           AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="SqlDataSource2_Status" 
           DataTextField="status" DataValueField="status_id"> 
           <asp:ListItem Value="">All</asp:ListItem> 
          </asp:DropDownList> 

Irgendwelche Ideen?

Dank

Antwort

26

Sortiert ... brauchen nur CancelSelectOnNullParameter = "false" innerhalb SqlDataSource.

+3

das hat mir sehr geholfen. Danke für deine Antwort. so viele Leute tun es nicht –

+2

Diese Option muss standardmäßig falsch sein. Es ist ein wahnsinniger Zeitverschwender, wenn man sich dieser Option nicht bewusst ist –

Verwandte Themen