Добавление ControlParameter к SqlDataSource предотвращает привязку запросов и данных? - PullRequest
5 голосов
/ 02 ноября 2010

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

10 голосов
/ 02 ноября 2010

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

...