2011-08-18 27 views
4

我想在ASP.NET中創建一個報表查看器,向用戶顯示其數據。 所有用戶的數據位於同一個表中。ASP.NET中的對象數據源問題(GetData方法)

現在我創建DBDataSet和TableAdapter的有這種方法

的GetData(@idNumber,@userNumber)

在屏幕背後的代碼,我想說明的報告觀衆我寫道:

FlightsDBDataSetTableAdapters.ReservationsTableAdapter ReservationsTableAdapter; 
ReservationsTableAdapter = new FlightsDBDataSetTableAdapters.ReservationsTableAdapter(); 
FlightsDBDataSet.ReservationsDataTable newReservationTable; 
newReservationTable = ReservationsTableAdapter.GetData(userId, userName); 
ObjectDataSource1.SelectParameters.Add("userName", userName); 
ObjectDataSource1.SelectParameters.Add("idNumber", userId); 

當我運行此我得到一個錯誤

報告處理過程中發生錯誤。 ObjectDataSource 'ObjectDataSource1'找不到具有參數:userName,idNumber的非泛型方法 'GetData(idNumber,userName)'。

因此,我的問題是我需要在哪裏編寫方法GetData,以及如何使用正確的數據生成報告。

非常感謝。

+0

你可以顯示你的ObjectDataSource1的完整代碼嗎? – Tim

+0

您可以嘗試通過設計師本身添加數據集方法。該向導應該在這裏幫助你。如果不是,你可以發佈objectdatasource的標記... – deostroll

+0

從不暴露HTML頁面中的數據源和參數... – AnandMohanAwasthi

回答

0

試試看。

1.創建將返回分貝空,如果參數沒有在存儲過程中

public static object GetDataValue(object o) 
{ 
    if (o == null || String.Empty.Equals(o)) 
     return DBNull.Value; 
    else 
     return o; 
} 

2.創建這將調用的存儲過程並填充DataSet方法傳遞的方法。

public DataSet GetspTest(string userName, string userId) { 

try 
{ 
    DataSet oDS = new DataSet(); 
    SqlParameter[] oParam = new SqlParameter[2]; 


    oParam[0] = new SqlParameter("@userName", GetDataValue(userName)); 
    oParam[1] = new SqlParameter("@idNumber", GetDataValue(userId)); 

    oDS = SqlHelper.ExecuteDataset(DataConnectionString, CommandType.StoredProcedure, "spTest", oParam); 
    return oDS; 
} 
catch (Exception e) 
{ 
    ErrorMessage = e.Message; 
    return null; 
} 

}

  1. 現在,添加數據集,讓我們說 'DataSet1.xsd' 拖放TableAdapter的,它會問你下面的細節

    3.1連接字符串(或者選擇現有的連接字符串或創建新的連接字符串)

    3.2選擇命令類型(現在選擇現有的存儲過程, y中的存儲過程,你必須創建較早的報告

    3.3選擇方法生成(同時檢查填充一個DataTable,並返回下一步的DataTable

    3.4單擊並提交(現在你的數據集是真正顯示詳細信息在報告中使用)

    1. 創建報告並將此DataSet1用作數據源。