将ControlParameter添加到SqlDataSource可以防止查询和数据绑定?

Set*_*son 5 asp.net data-binding sqldatasource controlparameter

我有一个调用存储过程的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>
Run Code Online (Sandbox Code Playgroud)

当我添加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>
Run Code Online (Sandbox Code Playgroud)

ControlParameter引用页面上的有效对象.还有其他建议吗?

ami*_*t_g 11

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

  • "CancelSelectOnNullParameter"正是我所缺少的.令人惊讶的是,我搜索谷歌4或5种不同的方式,却找不到; 希望这个问题能帮助下一个有同样问题的人! (3认同)