Доступ к набору результатов хранимой процедуры, выполненной с использованием SqlDataSource.Select - PullRequest
1 голос
/ 21 июля 2010

Я программирую веб-страницу в ASP.NET, которая отображает список студентов, не перечисленных в качестве участников чего-либо, и после щелчка по имени студента показывает вам краткую сводку их данных, чтобы пользователь мог убедиться, что они выбирают правильный человек.

Мой код в настоящее время правильно получает свой идентификатор, добавляет его в качестве параметра к моей хранимой процедуре и выполняет процедуру;

protected void LinkButton_OnClick(object sender, EventArgs e)
{
    LinkButton l = (LinkButton)sender;
    HiddenField hfv = (HiddenField)l.Parent.FindControl("hfAdmissionNumber");
    SqlDataSource2.SelectParameters.Clear();
    SqlDataSource2.DataSourceMode = SqlDataSourceMode.DataReader;
    SqlDataSource2.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
    Parameter hfcParam = new Parameter();
    hfcParam.Type = TypeCode.Int32;
    hfcParam.DefaultValue = hfv.Value;
    hfcParam.Name = "@AdmissionNumber";
    hfcParam.Direction = System.Data.ParameterDirection.Input;
    SqlDataSource2.SelectParameters.Insert(0, hfcParam);
    System.Data.DataView dv = (System.Data.DataView)SqlDataSource2.Select(DataSourceSelectArguments.Empty);
}

Однако, когда я пытаюсь получить доступ к результатам, я получаю следующую ошибку:

System.NullReferenceException: Object reference not set to an instance of an object.

После отладки, похоже, не возвращается никаких результатов ... но при запуске только хранимой процедуры в SQL Server с теми же данными он возвращает одну строку, как и ожидалось.

Как мне получить доступ к этому результату, чтобы я мог связать его с моими полями?

(я работаю в ASP.NET 3.5 в Visual Studio 2008 с SQL Server 2008.)

Ответы [ 2 ]

1 голос
/ 28 июля 2010

Ответ предоставлен на форумах ASP.NET:

http://forums.asp.net/p/1583276/3995150.aspx#3995150

0 голосов
/ 21 июля 2010

Исключение должно сообщать вам дополнительную информацию об ошибке, в частности, строку, в которой произошла ошибка. Вам следует обратить особое внимание на эту строку, чтобы попытаться определить, что именно является нулевым, и выяснить, как защититься от него.

Например, в приведенном выше коде я вижу, что у вас есть следующее: (промежуточный код удален для ясности)

HiddenField hfv = (HiddenField)l.Parent.FindControl("hfAdmissionNumber");
hfcParam.DefaultValue = hfv.Value;

В этом случае я вижу, что потенциально FindControl метод может вернуть ноль, в этом случае вы получите NullReferenceException при попытке сделать hfv.Value, поскольку hfv равно нулю.

Если вы можете выяснить, что именно является нулем, это должно дать вам лучшее представление о том, в чем проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...