我在将null值传递给存储过程时遇到问题,例如如果未在下拉列表中选择某个选项,如何将其作为null传递给sqdatasource到数据库。
我目前在我的页面上有许多下拉控件,它们保持参数值以传递给存储过程。
当我从这些控件中选择一些值时,gridview将显示它应该的结果,但是我遇到的问题是当没有选择任何值时将空值传递给SP。我检查了SP,当我执行它并传入空值时,它得到了正确的结果,所以我对SP很满意。我试过了
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>
其中一个下拉列表是:
<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>
有什么想法吗?
由于
答案 0 :(得分:30)
已排序...只需在sqldatasource中取消选择OnNullParameter =“false”。