代码之家  ›  专栏  ›  技术社区  ›  Seth Petry-Johnson

向SqlDataSource添加ControlParameter会阻止查询和数据绑定?

  •  5
  • Seth Petry-Johnson  · 技术社区  · 14 年前

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

    1 回复  |  直到 13 年前
        1
  •  11
  •   amit_g    14 年前

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