我正在編程ASP.NET中的一個網頁,該網頁顯示未列爲參與者的學生列表,並在單擊學生名稱時顯示一個簡要他們的細節總結,因此用戶可以確保他們選擇合適的人。訪問存儲過程的結果集,使用SqlDataSource.Select執行
我的代碼當前正確地獲得它們的ID,將它作爲參數添加到我的存儲過程並執行該過程;
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)
正如我所說,這是當我嘗試訪問結果,我得到一個錯誤。所以使用SqlDataSource2.Select語句後的代碼如: System.Data.DataRow dr = dv.Table.Rows [0]; 拋出錯誤。調試時,我無法找到檢索結果實際存儲的位置,這最終是我的問題 - 我如何訪問這些結果?我是否正確地做了,但得到錯誤,或者做錯了,因此錯誤? – VickyB 2010-07-21 14:05:36
@VickyB - 您是否嘗試過使用SQL事件探查器來記錄執行的確切SQL語句,以確保它正在執行您期望的SQL,並使用您期望的參數? – Justin 2010-07-21 14:15:05
我運行了SQL Profiler,它似乎沒有運行該過程......沒有一個SP事件類在他們的文本數據中顯示我的過程。這是否意味着我的程序沒有實際運行? – VickyB 2010-07-22 08:25:05