5

我有一个调用存储过程的 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 引用页面上的有效对象。还有其他建议吗?

4

1 回答 1

11

最有可能的参数之一为空或 null。将 CancelSelectOnNullParameter="false" 添加到 asp:SqlDataSource 和 ConvertEmptyStringToNull="true" 到两个参数。一旦它工作,调整参数,使 SP 得到它所期望的。

于 2010-11-02T18:17:05.450 回答