<asp:ControlParameter - 通过sqldatasource将空值传递给DB

the*_*ner 12 t-sql asp.net

我在将null值传递给存储过程时遇到问题,例如,如果未在下拉列表中选择选项,那么如何将其作为null传递到sqdatasource到数据库.

我目前在我的页面上有许多下拉控件,它们保持参数值以传递给存储过程.

当我从这些控件中选择一些值时,gridview将显示它应该的结果,但是我遇到的问题是当没有选择任何值时将空值传递给SP.我检查了SP,当我执行它并传入空值时,它得到了正确的结果,所以我对SP很满意.我试过了

ConvertEmptyStringToNull="true" DefaultValue=""
Run Code Online (Sandbox Code Playgroud)

控制参数中的设置没有运气,下拉列表的"全部"选项的值为""

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>
Run Code Online (Sandbox Code Playgroud)

其中一个下拉列表是:

                            <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>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢

the*_*ner 30

排序...只需要sqldatasource中的CancelSelectOnNullParameter ="false".

  • 这对我帮助很大.thansk回复自己.这么多人不这样做 (4认同)
  • 默认情况下,此选项必须为false.如果一个人不知道这个选项,这是一个疯狂的时间浪费 (4认同)