【问题标题】:Control doesn't bind to SqlDataSource on page load with blank parameters控件在使用空白参数的页面加载时未绑定到 SqlDataSource
【发布时间】:2013-01-25 09:16:28
【问题描述】:

假设您有一个如下所示的 SQLDataSource:

<asp:SqlDataSource ID="sqldsSample" runat="server" 
    ConnectionString="<%$ ConnectionStrings:myConnectionString %>" 
    SelectCommand="SELECT [col1], [col2] FROM [tbl] WHERE [col3] = @val) ORDER BY [col1] DESC;">
    <SelectParameters>
        <asp:Parameter DefaultValue="False" Name="val" Type="Boolean" />
        <asp:Parameter DefaultValue="" Name="val2" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

假设您已决定要在此处声明“val2”参数,并且您不想在后面的代码中添加和/或删除参数(例如,更改 SelectCommand 以进行一些过滤有一些额外的标准)。

它将失败而没有错误 - 控件只会显示为空。

【问题讨论】:

    标签: asp.net sqldatasource


    【解决方案1】:

    你必须为参数指定一个默认值,即使它没有被使用。例如,只需输入一个空格字符即可:

    &lt;asp:Parameter DefaultValue=" " Name="val2" Type="String" /&gt;

    请注意,如果省略 DefaultValue 属性,它仍然不起作用。

    【讨论】:

      【解决方案2】:

      SqlDataSource 上还有 CancelSelectOnNullParameter 参数 - 如果您希望任何参数为空,则需要将其设置为 false。

      这不是很明显,它已经抓住了我几次!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-20
        • 1970-01-01
        • 2011-08-11
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 2014-01-27
        • 1970-01-01
        相关资源
        最近更新 更多