Добавление 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 получил то, что ожидал.