2013-02-13 3 views
12

Mam problemy z przekazywaniem wartości pustej do procedury składowanej, np. jeśli opcja nie jest wybrana na liście rozwijanej, w jaki sposób można ją przekazać jako wartość null do źródła danych sqdatasource do bazy danych.<asp: ControlParameter - przekazanie wartości pustej do bazy danych za pośrednictwem obiektu sqldatasource

Mam obecnie kilka kontroli rozwijanych na mojej stronie, które przechowują wartości parametrów, aby przejść do procedury przechowywanej.

Gdy wybiorę niektóre wartości z tych kontrolek, widok siatki wyświetli wyniki, które powinien, ale mam problem z tym, że gdy żadne wartości nie są wybrane, przechodzi wartość zerową do SP. Sprawdziłem SP i kiedy go wykonuję i przekazuję wartości null, uzyskuję poprawne wyniki, więc jestem zadowolony z SP. Próbowałem

ConvertEmptyStringToNull="true" DefaultValue="" 

ustawień w paramater kontrolnej bez powodzenia, a „ALL” opcja menu rozwijanego zawiera wartość „”

Kod dla SqlDataSource jest:

    <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> 

Jednym z list rozwijanych jest:

      <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> 

Jakieś pomysły?

Dzięki

Odpowiedz

26

Posortowane ... wystarczy CancelSelectOnNullParameter = "false" w SqlDataSource.

+3

to bardzo mi pomogło. thansk za udzielenie odpowiedzi. tak wielu ludzi tego nie robi –

+2

Ta opcja musi być domyślnie fałszywa. To jest szaleństwo czasu, jeśli ktoś nie jest świadomy tej opcji –

Powiązane problemy