Я наткнулся на проблему и не могу понять ее самостоятельно. Надеюсь, что кто-то может помочь мне решить эту проблему.
Итак, у меня есть простая хранимая процедура в базе данных SQL Server 2005
CREATE PROCEDURE spTest
@pin varchar(128)
AS
BEGIN
SELECT @Pin as Param
END
и страница asp.net с элементами управления SqlDataSource
и GridView
в приложении (VS2008)
<asp:SqlDataSource
ID="sds2"
runat="server"
ConnectionString="..."
SelectCommand="spTest"
SelectCommandType="StoredProcedure"
>
<SelectParameters>
<asp:QueryStringParameter Name="pin" QueryStringField="pin" DbType="String"/>
</SelectParameters>
</asp:SqlDataSource>
<asp:GridView ID="gv" runat="server" DataSourceID="sds2"></asp:GridView>
Как видите, код прост. Тем не менее, если я не удосужился указать пин-код в URL (.../Default.aspx
вместо .../Default.aspx?pin=somevalue
) или указать пустую строку (.../Default.aspx?pin=
), никакой хранимой процедуры не будет (я проверяю ее с помощью SQL Server Profiler).
Более того, если я заменю QueryStringParameter
на простой
<asp:Parameter Name="pin" DbType="String" />
и не указывать Значение по умолчанию , ситуация повторяется и вызовы хранимой процедуры не выполняются. В чем причина такого поведения?
Я довольно новичок в asp.net и, возможно, что-то пропустил, но я даже попытался сделать то же самое в файле с выделенным кодом программно, а не декларативно, и результат тот же. Единственное, что я смог выяснить, это то, что в этом случае Selecting
событие SqlDataSource
запускается, а Selected
- нет. Может быть, какая-то ошибка происходит?
В любом случае, любая помощь будет принята с благодарностью.