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

ほとんどの場合、パラメーターの 1 つが空または null です。CancelSelectOnNullParameter="false" を asp:SqlDataSource に追加し、ConvertEmptyStringToNull="true" を両方のパラメーターに追加します。機能したら、SP が期待どおりになるようにパラメーターを微調整します。

于 2010-11-02T18:17:05.450 に答える