Добавление ControlParameter к SqlDataSource предотвращает привязку запросов и данных?

У меня есть 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 ответ

Решение

Скорее всего, один из параметров является пустым или нулевым. Добавьте CancelSelectOnNullParameter="false" в asp:SqlDataSource и ConvertEmptyStringToNull="true" для обоих параметров. Как только это сработает, настройте параметры так, чтобы SP получил то, что ожидал.

Другие вопросы по тегам