我有一个调用存储过程的SqlDataSource,它工作正常。如果我添加<ControlParameter>
标记以添加其他参数,则查询永远不会触发,并且数据绑定永远不会发生。建议?
此作品:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultDB %>"
SelectCommand="SP_WHATEVER" SelectCommandType="StoredProcedure"
UpdateCommand="SP_WHATEVER2" UpdateCommandType="StoredProcedure">
<SelectParameters>
<asp:SessionParameter DefaultValue="" Name="UserName" SessionField="RP_Program" Type="String" />
</SelectParameters>
<UpdateParameters>
<snip...>
</UpdateParameters>
</asp:SqlDataSource>
当我添加ControlParameter时,不再发生数据绑定:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultDB %>"
SelectCommand="SP_WHATEVER" SelectCommandType="StoredProcedure"
UpdateCommand="SP_WHATEVER2" UpdateCommandType="StoredProcedure">
<SelectParameters>
<asp:SessionParameter DefaultValue="" Name="UserName" SessionField="RP_Program" Type="String" />
<asp:ControlParameter Name="SprocArgName" ControlID="ddlFilter" PropertyName="SelectedValue" Type="String" />
</SelectParameters>
<UpdateParameters>
<snip...>
</UpdateParameters>
</asp:SqlDataSource>
ControlParameter引用页面上的有效对象。还有其他建议吗?
答案 0 :(得分:10)
很可能其中一个参数为空或null。将CancelSelectOnNullParameter =“false”添加到两个参数的asp:SqlDataSource和ConvertEmptyStringToNull =“true”。一旦它工作,调整参数,以便SP得到它所期望的。