2013-02-13 4 views
12

null値をストアドプロシージャに渡す際に問題があります。オプションがドロップダウンで選択されていない場合、これをNULLとしてsqdatasourceを通してデータベースに渡すことができます。<asp:ControlParameter - sqldatasource経由でDBにNULL値を渡します。

現在、私のページには、ストアドプロシージャに渡すためのパラメータ値を保持しているいくつかのドロップダウンコントロールがあります。

これらのコントロールからいくつかの値を選択すると、グリッドビューに必要な結果が表示されますが、問題が発生するのは、値が選択されていない場合です。私はSPをチェックして、それを実行してヌル値を渡すと正しい結果が得られますので、SPに満足しています。私は

運と制御のparamaterで
ConvertEmptyStringToNull="true" DefaultValue="" 

設定を試してみた、とドロップダウンの「ALL」オプションが

「」の値を持つSqlDataSourceコントロールのコードは次のとおりです。

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

ドロップダウンリストの1つは:

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

どのようなアイデアですか?

おかげでソートさ

答えて

26

は...ただのSqlDataSource内= "false" をCancelSelectOnNullParameterを必要としています。

+3

これは私を非常に助けました。あなたに返信するには多くの人はそれをしません –

+2

このオプションは、デフォルトではfalseにする必要があります。もしこのオプションを知らないのならば、それは非常識な時間の浪費です。 –