【问题标题】:Adding ControlParameter to SqlDataSource prevents query and databinding?将 ControlParameter 添加到 SqlDataSource 会阻止查询和数据绑定?
【发布时间】:2011-05-04 01:05:33
【问题描述】:

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

【问题讨论】:

    标签: asp.net data-binding sqldatasource controlparameter


    【解决方案1】:

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

    【讨论】:

    • "CancelSelectOnNullParameter" 正是我所缺少的。令人惊讶的是,我用 4 或 5 种不同的方式搜索 Google 却找不到;希望这个问题能帮助下一个遇到同样问题的人!
    • 感谢这对我也有用。前几天脑洞大开。令人惊讶的是,它在我以前的一些 aspx 文件中没有该属性,但在我刚刚创建的新文件中却没有。
    猜你喜欢
    • 2013-05-11
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 2017-05-22
    • 2011-01-13
    • 2013-08-22
    相关资源
    最近更新 更多